在JQuery中,如何将单击的元素传递给onclick事件上调用的方法

我在页面上有几行:

Save

在我的Save()方法中,我想操纵被单击以调用Save()方法的div。 我如何通过它(我认为$(this) ),而不诉诸ID?

非常感谢!

删除save()并使用click()来捕获事件:

 
Save

[ 查看输出 ]

或者,如果您坚持使用save()这样的function:

 
Save

[ 查看输出 ]

EDIT(2015) :。on(’click’,function)

 
Save

在事件处理程序内部, this指的是单击的元素。 但是,在从事件处理程序调用的函数内部,即Savethis将引用window。

您可以在通过call [MDN] (或applySave明确设置this应该引用的内容:

 onclick="Save.call(this, event || window.event);" 

然后你可以在函数内使用它作为$(this)

 function Save(event) { // `this` refers to the clicked element // `$(this)` is a jQuery object // `event` is the Event object }; 

但是当你使用jQuery时,你真的应该这样做

 $('.save-button').click(Save); 

绑定事件处理程序。 将标记与逻辑混合不是一种好的风格。 您应该将演示文稿与应用程序逻辑分开。

或者,如果您希望Save接受元素作为参数,那么只需传递它:

 onclick="Save(this);" 

和jQuery:

 $('.save-button').click(function() { Save(this); }); 

挺直的…

 $('#myDiv').click(function(){ save($(this)); }) function save($obj){ $obj.css('border', '1px solid red'); } 

只需将其称为: $(this)

Save()函数内部, this指的是被单击的DOM元素。 您可以使用$(this)将其转换为jQuery对象。

这默认是指window ,因此您需要将this作为Save函数的参数传递:

 
Save
function Save(div) { }

现在在Save中,你可以使用div来引用被点击的div。

我对this表现感到困惑。 这个链接帮助了我: http : //www.quirksmode.org/js/this.html