【问题标题】:the right way to pass variable to a callback function [duplicate]将变量传递给回调函数的正确方法[重复]
【发布时间】:2011-06-21 13:14:28
【问题描述】:

当我有

$('#div').click(function(someVar){//do something with soneVar});

但是我想要一个命名的回调函数,我是否正确地传递了someVar

$('#div').click(someFunction(someVar));
function someFunction(someVar){}

【问题讨论】:

    标签: javascript jquery callback anonymous-function


    【解决方案1】:

    你的两个例子都是错误的。

    您的第一个示例为名为@9​​87654321@ 的回调方法创建了一个参数;它将成为 jQuery 传递给处理程序方法的 event 对象。

    第二个示例立即调用该方法,然后将其结果作为事件处理程序传递给click 方法。

    您需要传递一个函数表达式,该表达式使用外部作用域的参数调用您的函数(使用闭包):

    $('#div').click(function() { someFunction(someVar); });
    

    【讨论】:

      【解决方案2】:

      click 回调函数将传递一个 jQuery 事件对象,而不是 someVar

      你必须自己调用你的函数回调函数中。

      $('#div').click(function(ev) {
          someFunction(someVar);
      }
      
      function someFunction(someVar) {
           ...
      }
      

      或者,做:

      $('#div').click({someVar: someVar}, someFunction);
      
      function someFunction(ev) {
          // your var is now in ev.data.someVar
      }
      

      【讨论】:

        【解决方案3】:

        考虑将参数作为事件数据传递给点击事件(或任何带有 jQ​​uery 的事件):http://api.jquery.com/click/

        【讨论】:

          猜你喜欢
          • 2015-06-25
          • 1970-01-01
          • 1970-01-01
          • 2019-10-08
          • 1970-01-01
          • 1970-01-01
          • 2011-09-14
          • 1970-01-01
          • 2012-08-20
          相关资源
          最近更新 更多