如何使用事件侦听器传递事件(e)和变量?

时间:2013-07-31 06:00:51

标签: javascript

我有一个这样的事件监听器:

div.addEventListener('mouseover',function(){bubble_info.call(data);},false);

function bubble_info(e,info){
  //get e.pageX etc
  //do stuff with info
}

此问题出在bubble_info变量e包含data的信息且info未定义

如何确保我能正确获得einfo

2 个答案:

答案 0 :(得分:1)

事件对象有许多有用的properties and methods

div.addEventListener('mouseover',function(event){
    bubble_info(event, info); 
    // you can pass additional params that can be used in your handler 
},false);

function bubble_info(event, info){
  // you can access type of event from event object's properties
  console.log(event.type);
  console.log(info); // your additional parameter.
};

<强> addEventListener Documentation

仅在您需要传递this (当前)对象的引用时才使用调用。 它的语法是......

FunctionName.call(thisArg, arguments-list, ...);

<强> call Documentation

答案 1 :(得分:0)

试试这个(除非你传递了一个特定的this引用,否则你不需要通话 - 你的代码中缺少这个引用):

div.addEventListener( 
  'mouseover', 
  function(event) { 
    bubble_info( event, dataYouWant );
  }, 
  false 
}

作为参考,.call()应如下所示:bubble_info.call( this, event, etc )