Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何以两种不同的方式调用同一个函数?_Javascript_Jquery - Fatal编程技术网

Javascript 如何以两种不同的方式调用同一个函数?

Javascript 如何以两种不同的方式调用同一个函数?,javascript,jquery,Javascript,Jquery,我正在尝试组合一个函数,该函数将在以下情况下显示警报(当然,我在该函数中有很多代码,但在这种情况下,它将是警报): 单击类为的元素上的。编号 Change选择[name=receive] 我有此代码,但不起作用: $(document).on(("click",".number"),("change","select[name=receive]"),function(){ alert('test'); }) 试试这个 $(document).on("click change","sel

我正在尝试组合一个函数,该函数将在以下情况下显示警报(当然,我在该函数中有很多代码,但在这种情况下,它将是警报):

  • 单击类为
    的元素上的
    。编号
  • Change
    选择[name=receive]
  • 我有此代码,但不起作用:

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

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

    试试这个

    $(document).on("click change","select[name=receive], .number", function(){
        alert('test');
    });
    
    function doMyWork() {
        console.lot( 'TEST' );
    }
    $('.number').on('click', doMyWork);
    $('select[name=receive]').on('change', doMyWork);
    
    或者,如果在DOM就绪后插入元素: 如果目标元素位于
    DOM ready


    我不确定您是从哪里学来这种语法的,但on()不是这样工作的

    使用命名函数并共享它

    (function(){
    
       var shared = function(){
           console.log(this); 
       }
    
       $(document)
           .on("click",".number", shared)
           .on("change","select[name=receive]", shared);  
    
    }());
    

    不能在单个
    .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);
    

    这对我来说是最好的解决办法。工作完美。谢谢,很好。很高兴你觉得这很有用。享受吧!
    var al = function(){
        alert('test');
    };
    
    $('.number').on('click', al);
    $('select[name=receive]').on('change', al);