【问题标题】:How can I pass data to a function when adding an event listener?添加事件侦听器时如何将数据传递给函数?
【发布时间】:2012-03-29 10:22:41
【问题描述】:

这是我的代码:

$(document).ready(function(){
dropbox.addEventListener("dragenter", somethingHappens, false);
});

function somethingHappens(evt) {
    // code here
}

在附加事件侦听器时,如何将数据传递给 somethingHappens() 函数?那可能吗?我正在寻找我可以做的事情:

function somethingHappens(evt,dataItem1,dataItem2) {
    // code here, I need to use evt here
}

感谢您的帮助!

【问题讨论】:

    标签: javascript jquery javascript-events event-handling


    【解决方案1】:

    如果你不介意使用匿名函数作为处理程序,你可以按照老派的方式来做:

    var data = { foo: 'bar' };
    
    dropbox.addEventListener("dragenter", function(evt) {
        somethingHappens.call(this, evt, data);
    }, false);
    
    function somethingHappens(evt, data) {
        console.log(data);
    }
    

    但我也很确定您可以为此使用 jQuery 事件:

    $(dropbox).bind( 'dragenter', { foo: 'bar' }, somethingHappens );
    
    function somethingHappens(evt) {
        console.log(evt.data);
    }
    

    【讨论】:

      【解决方案2】:

      你可以使用 jQuery 的 bind 方法:-

      $(document).ready(function(){
      $('#yourdropboxid').bind("dragenter", { foo: 'bar' }, somethingHappens);
      });
      
      function somethingHappens(event) {
         alert(event.data.foo); // alerts 'bar'
      }
      

      【讨论】:

        猜你喜欢
        • 2011-09-18
        • 2010-09-20
        • 2015-12-07
        • 2010-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-05
        相关资源
        最近更新 更多