如何以两种不同的方式调用相同的函数?

时间:2015-02-17 18:57:46

标签: javascript jquery

我正在尝试组合一个显示警告的功能(当然我在此功能中有很多代码,但对于这种情况,它会提醒)之后:

    对于类Click 的元素,
  1. .number
  2. Change select[name=receive]
  3. 我有这段代码,但它不起作用:

    $(document).on(("click",".number"),("change","select[name=receive]"),function(){
        alert('test');
    })
    

5 个答案:

答案 0 :(得分:2)

试试这个

$(document).on("click change","select[name=receive], .number", function(){
    alert('test');
});

var fn = function () {
   alert('test');
}

$(document).on("click", ".number", fn);
$(document).on("change", "select[name=receive]", fn); 

答案 1 :(得分:2)

试试这个

function doMyWork() {
    console.lot( 'TEST' );
}
$('.number').on('click', doMyWork);
$('select[name=receive]').on('change', doMyWork);

或者,如果在DOM准备好之后插入元素: 如果目标元素位于DOM ready

,则不必使用此表单
function doMyWork() {
    console.lot( 'TEST' );
}
$(document).on('click', '.number', doMyWork)
.on('change', 'select[name=receive]', doMyWork);

答案 2 :(得分:2)

您无法在单个.on()电话中分隔事件和选择器。你有两个选择。你可以一起使用它们......

$(document).on("click change", ".number, select[name=receive]"),function(){
    alert('test');
});

...但是这意味着 .number 会同时收听点击和更改,这可能导致该功能运行2次。

您需要将该函数移到外部并为每个处理程序重用它

var al = function(){
    alert('test');
};

$('.number').on('click', al);
$('select[name=receive]').on('change', al);

答案 3 :(得分:0)

$(document).on("click change",".number, select[name=receive]", function(){
    alert('test');
})

答案 4 :(得分:0)

我不确定你在哪里学习了这种语法,但这并不是on()的工作方式。

使用命名函数并共享它。

(function(){

   var shared = function(){
       console.log(this); 
   }

   $(document)
       .on("click",".number", shared)
       .on("change","select[name=receive]", shared);  

}());