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