将change()事件添加到现有的click()函数,而不触发第一个事件

时间:2015-12-07 16:51:29

标签: javascript jquery

我有一个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()

1 个答案:

答案 0 :(得分:3)

简单,存储函数并将函数作为参数传递两次:

function yourfunctionname(e) {
   ...
}

$('body').on('click', '.click-1, .click-2', yourfunctionname)
    .on('change', ':checkbox, .change', yourfunctionname);