我有一个JQuery click()
函数,我需要为另一个元素添加change()
事件(必须只触发change()
事件)。
我如何组合它,但是让这个额外的元素只触发两个事件中的一个?
$('body').on('click change', '.click-1, .click-2, :checkbox, .change', function()
我添加了更改事件和更改类。对于复选框,它们是否会触发这两个事件? (这可能是个问题吗?)。
有没有办法让元素只触发那个事件,而不是click()
?
我只需要找到一种不重复相同代码(50行)两次的方法。
编辑:修复(感谢@somethinghere):
$('body').on('click change', '.click-1, .click-2, :checkbox, .change', function(event) {
if (event.type == 'click' && $(this).hasClass( 'change' )) {
event.preventDefault();
event.stopImmediatePropagation();
return;
}
// more code
});
正确的解决方案应该只对按钮使用click()
。
答案 0 :(得分:3)
简单,存储函数并将函数作为参数传递两次:
function yourfunctionname(e) {
...
}
$('body').on('click', '.click-1, .click-2', yourfunctionname)
.on('change', ':checkbox, .change', yourfunctionname);