我正在使用 jquery 将事件绑定到几个按钮...
$(".numField").bind("click", stageButtonClick());
在函数stageButtonClick()中,我想获取调用按钮的对象,但我不能$(this)在函数内部使用stageButtonClick,它不会为我返回任何东西。
另外,请不要建议使用内联函数
$(".numField").bind("click", function() {...})
我想学习如何做到这一点。
我正在使用 jquery 将事件绑定到几个按钮...
$(".numField").bind("click", stageButtonClick());
在函数stageButtonClick()中,我想获取调用按钮的对象,但我不能$(this)在函数内部使用stageButtonClick,它不会为我返回任何东西。
另外,请不要建议使用内联函数
$(".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") );
}
您正在尝试以非常非 jQuery 的方式做事。即使您不希望整个函数内联,您也可以通过执行以下操作让您的生活更轻松:
$(".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,而不是函数本身
其次,将一个event对象传递给带有targetandcurrentTarget元素的被调用函数。通常情况下,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);