所以我在页面上有一堆按钮,其中插入了其他HTML,如下所示:
<input class="add_new_task" type="submit" value="Add New Task">
<input class="add_new_task" type="submit" value="Add New Task">
<input class="add_new_task" type="submit" value="Add New Task">
然后我的选择器如下:
$JQ('.add_new_task').live('click', function(){
//do some stuff
});
然而,live('click')似乎只绑定到第一个元素,因此第二个,第三个等元素不会发生任何事情。关于我正在做什么的任何建议
编辑:
原来我是愚蠢的 - 我添加了一些错误检查,如果文本框为空则不允许提交 - 但我正在通过id定位文本框(愚蠢),而这反过来又选择了第一个文本框ID - 确实是空的。现在改为基于类的选择系统 - 感谢所有的答案!
答案 0 :(得分:1)
在jQuery API网站上找到了这个
从jQuery 1.7开始,不推荐使用.live()方法。使用.on()附加事件处理程序。
尝试使用.on()方法,除此之外它对我来说都很好
答案 1 :(得分:1)
如果这是jQuery 1.7 +
,请使用.on()编辑:此外,根据您的操作,可能不需要.on()。试试.click()......
$JQ('.add_new_task').click(function(){
//do some stuff
});
答案 2 :(得分:1)
首先你应该使用.on,因为从1.7开始替换所有事件绑定,但你可能会使用较低版本。 当您使用实时时,您希望使用事件委派,这意味着您必须绑定到父对象,然后该父对象将处理来自(特定)子元素的特定传播事件。
将输入字段包装在像这样的div中
<div id="tasks">
<input class="add_new_task" type="submit" value="Add New Task">
<input class="add_new_task" type="submit" value="Add New Task">
<input class="add_new_task" type="submit" value="Add New Task">
</div>
使用.live这应该可行:
$JQ('#tasks').live('click', function(){
//do some stuff
});
更好的当然是使用.on像这样(相同的HTML)
$("#tasks").on("click", ".add_new_task", function(event){
//do some stuff
});