找到使用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
函数的结果,而不是函数本身
其次,使用target
和currentTarget
元素将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);