1
我不能完全想到如何將兩個幾乎完全相同的init監聽器,jQuery函數合併爲一個。不能將兩個jQuery函數合併爲一個函數
VARIANT 1(可行)。 變№1工作,但它看起來像一件壞事:
// Checkbox
var matchesWithEmail = document.getElementById('matchesWithEmail');
// Checkbox
var matchesWithEmail2 = document.getElementById('matchesWithEmail-2');
jQuery(matchesWithEmail).on('change', function (e) {
var current = e.target;
var checked = current.checked;
matchesWithEmail2.checked = checked;
});
jQuery(matchesWithEmail2).on('change', function (e) {
var current = e.target;
var checked = current.checked;
matchesWithEmail.checked = checked;
});
VARIANT 2(不完全可行)。 我也試圖減少,但它我收到壞主意的結果,它給出錯誤有時工作:
var matchesWithEmail = [document.getElementById('matchesWithEmail'), document.getElementById('matchesWithEmail-2')];
matchesWithEmail.forEach(function (element) {
jQuery(element).on('change', function (e) {
var current = e.target,
checked = current.checked,
allExceptCurrent = matchesWithEmail.filter(function (element) {
return element !== current;
});
allExceptCurrent.forEach(function (element) {
jQuery(element).off('change');
element.checked = checked;
jQuery(element).on('change', function (e) {
var current2 = e.target,
checked2 = current2.checked,
allExceptCurrent2 = matchesWithEmail.filter(function (element) {
return element !== current2;
});
allExceptCurrent2.forEach(function (element) {
jQuery(element).off('change');
element.checked = checked2;
});
});
});
});
});
請告訴我這兩個功能如何減少緊湊?
嗯不知道我知道,你想保留兩個?還是隻有一個?並且您希望我們審查您的代碼,並告訴您如何改進它? – LiranBo
「減少它」是什麼意思?將兩者結合爲一體?添加關於您想要完成的內容的說明可能會有所幫助。 –
是的,我試圖改善它,因爲我的變體是壞的,我知道它,但意外的是我不能提出一個很好的解決方案。直到** jfriend00 **提供了一個優雅的解決方案。我不明白爲什麼沒有想到它自己。謝謝! – user3688243