的代码如下所示:如何重构jQuery代码中的这些回调?
<label>radio 1 </label>
<input type="radio" onchange="$('input2').show()" id="radio1" name="RadioGroup">
<label>radio 2 </label>
<input type="radio" onchange="$('input2').show()" id="radio2" name="RadioGroup">
<label>radio 3 </label>
<input type="radio" onchange="$('input2').hide()" id="radio3" name="RadioGroup">
<input type="text" id="input2">
有可能是这些代码的两个缺点:已经被写入了onchange
- jQuery的代码三次
- 的
onchange
代码才会执行当我点击/更改其中radio
。换句话说,当页面被初始化时,将会执行这些代码而不是。例如,如果在页面初始化的radio3
被选中,input2
仍将显示..
使用内联jQuery必须是某种形式的亵渎。您应该使用不显眼的JavaScript –
对于#2,您想要将逻辑提取到具有自定义事件的逻辑或处理程序的声明函数中。然后,您可以调用该函数或在页面加载时触发事件。同时考虑1和2,你可能会把所有的信息放在同一个函数中。给无线电相同的名称和输入相同的类。获取无线电元件的值,隐藏除了适用于选定无线电的那个类别以外的所有输入。 –
@MattWhipple不明白'onchange'的浏览器会忽略它,所以这已经不显眼了;这是否是好的做法是另一回事。 –