【问题标题】:Pass arguments to a callback function in jquery click event [duplicate]将参数传递给jQuery单击事件中的回调函数[重复]
【发布时间】:2016-01-09 04:18:46
【问题描述】:

直奔业务:

我有一个如下所示的 jquery 事件监听器:

$(".number").click(printNumber);

还有一个回调函数:

function printNumber(number){
   console.log(number);
}

我想知道是否可以将参数传递给回调,使其看起来像这样

$(".number").click(printNumber(number));

(我知道它会立即调用该函数,但仍然有办法将参数传递给它)

提前谢谢你!

【问题讨论】:

    标签: javascript jquery callback jquery-callback


    【解决方案1】:

    处理这个问题的简洁方法是返回一个函数:

    function printNumber(number) {
       return function(e) {
           console.log(number);
       };
    }
    

    然后使用:

    $(".number").click(printNumber(number));
    

    【讨论】:

      【解决方案2】:

      您可以在 jQuery 中直接将数据以 event.data 的形式传递给回调

      $(".number").on('click', {number : 4}, printNumber);
      
      function printNumber(event){
         console.log(event.data.number); // 4
      }
      

      另一种方法是使用bind

      $(".number").click(printNumber.bind($, 4));
      
      function printNumber(number, event){
         console.log(number); // 4
      }
      

      但这也会改变回调this 的值

      【讨论】:

      • 返回函数是更简洁的方式。
      • @RobertMoskal - 传递 event.data 是 jQuery 的方式,这就是它存在的原因
      • 在 printNumber 代码中并不明显你有 event.data.number,但是当 $number.off('click', printNumber)
      • 真的很感谢,绑定对我有用
      猜你喜欢
      • 2019-08-09
      • 2011-11-13
      • 2011-09-02
      • 2017-01-18
      • 2021-10-09
      • 2018-04-07
      • 1970-01-01
      相关资源
      最近更新 更多