从元素事件中调用的函数中获取元素

时间:2012-10-12 15:49:13

标签: jquery

假设我有以下内容......

jQuery('#a').click(function(){
   myFunction();
});
function myFunction(){
  var me = jQuery(this);// this one gets the "window" object instead of "#a" element
}

当我不能发送myFuncton作为参数时,如何从this获取启动事件的目标元素,因为它会让我回过头来重新开始检查整个站点并更改每个函数调用参数...

3 个答案:

答案 0 :(得分:4)

所以你可以这么做:

$('#a').click(myFunction); // then this in myFunction will be the '#a' element.

更新

如果您需要在myFunction以外的回调中执行其他操作,那么您可以尝试.call().apply()执行具有给定此值的函数。< / p>

$('#a').click(function() {
    otherLogic();
    myFunction.call(this);
});

答案 1 :(得分:1)

试试这个

jQuery('#a').click(function(){
   myFunction(this);
});

function myFunction(elem){
  var me = jQuery(elem);
}

当您从click事件

传递函数时,您将获得在elem中调用该函数的当前对象

答案 2 :(得分:0)

jQuery('#a').click(function(){
   myFunction(this);
});
function myFunction(sender){
  if (sender !=undefined)
   {
      var me = jQuery(sender);// and do other stuff
      //.....
   }
   //do your old stuff -- me will be logically out of scope
}
//this will not result in an error, sender will be undefined
// the code will be compatible backwards
myfunction();