找到使用jquery或javascript调用事件的按钮对象

我正在使用jquery将事件绑定到几个按钮……

$(".numField").bind("click", stageButtonClick()); 

在函数stageButtonClick() ,我想获取调用按钮的对象,但我不能在stageButtonClick函数中使用$(this) ,它不会为我返回任何内容。

另外,请不要建议内联函数用法

 $(".numField").bind("click", function() {...}) 

我想学习如何这样做。

你的问题在这里:

 $(".numField").bind("click", stageButtonClick()); don't use parenthesis ^^ 

在分配命名函数时不要使用括号,因为它将调用函数并指定结果。

这有效:

演示

 $(document).ready(function(){ $(".numField").bind("click", stageButtonClick); }); function stageButtonClick() { alert( $(this).attr("id") ); } 

您正在尝试以非常不同的方式执行操作。 即使你不希望整个函数内联,你也可以通过这样的方式让你的生活变得更轻松:

 $(".numField").bind("click", function() { stageButtonClick(this); // or stageButtonClick($(this)) if you want to pass jQuery selector }); 

在这里,您只需将单击的DOM元素传递给stageButtonClick()函数即可。

此外,如果您使用的是jQuery 1.7或更高版本,则应该使用on()而不是bind()

首先, $(".numField").bind("click", stageButtonClick()); 将无法工作,因为stageButtonClick()返回stageButtonClick函数的结果,而不是函数本身

其次,使用targetcurrentTarget元素将event对象传递给被调用函数。 Normaly, event.currentTarget将是.numField

所以,试试$(".numField").bind("click", stageButtonClick); 你通常可以使用$(this)$(event.currentTarget)

如果是这种情况,您可以使用event object

 $(".numField").bind("click", stageButtonClick); function stageButtonClick(e){ // You can just use **this** OR **$(e.target)** } 

还使用.on()而不是.bind()绑定事件,因为后者已被前者取代

 $(".numField").on("click", stageButtonClick);