2

假设我有以下...

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

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

4

3 回答 3

4

所以你可以这样做:

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

更新

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

$('#a').click(function() {
    otherLogic();
    myFunction.call(this);
});
于 2012-10-12T15:51:27.343 回答
1

试试这个

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

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

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

于 2012-10-12T15:54:57.950 回答
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();
于 2012-10-12T16:09:51.043 回答