的代碼如下所示:如何重構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'的瀏覽器會忽略它,所以這已經不顯眼了;這是否是好的做法是另一回事。 –