2012-03-29 61 views
0

所以我有一个页面上的一系列按钮,与其他HTML点缀,看起来像这样:的jQuery .live(“点击”)似乎只绑定到的第一个元素

<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 
}); 

然而,活(“点击”)似乎只绑定到第一个元素,那么什么都不会与第二,第三等元素发生。任何建议,我在做什么

编辑:

原来我太傻了 - 我加了一些错误检查,不允许提交如果一个文本框是空的 - 但我靶向文本框(愚蠢地)由id,而这又是选择与该ID的第一个文本框 - 这确实是空的。现在更改为基于类的选择系统 - 感谢所有答案!

+1

嗯......'live'应该可以工作,尽管它已经被弃用了。尝试使用'on'来代替,并且一定要在'$ JQ(function(){...})中包装你的jquery' – 2012-03-29 22:44:38

+0

似乎工作正常,http://jsfiddle.net/jhfR4/ – 2012-03-29 22:44:59

+1

live已被弃用。 .. – 2012-03-29 22:45:09

回答

1

发现这个jQuery开发API网站

在jQuery 1.7的,所述.live()方法被弃用。使用.on()附加事件处理程序。

尝试使用其他的。对()方法相比,这一切看起来好像没什么问题

1

使用。对(),如果这是jQuery的1.7+

http://api.jquery.com/on/

编辑:另外,根据你在做什么,.on()可能没有必要。尝试。点击()...

$JQ('.add_new_task').click(function(){ 
    //do some stuff 
}); 
+0

感谢你 - 虽然我使用1.6.2,并且所有东西都是由JS生成的,所以我需要使用live()或on() – agjmills 2012-03-29 22:56:18

+0

如果你使用的是1.6.2,请继续并根据需要使用live()。否则就使用。点击():) – 2012-03-29 22:57:43

1

首先你应该使用。对所有的,因为替换所有事件绑定为1.7,但你可能会使用较低版本偏离航向。 当你使用live时,你想要使用事件委托,这意味着你必须绑定到一个父对象,然后它将处理来自(特定)子元素的特定传播事件。

包装您的输入字段这样

<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一个div应该工作:

$JQ('#tasks').live('click', function(){ 
    //do some stuff 
}); 

小康当然是使用。对这样的(相同的HTML)

$("#tasks").on("click", ".add_new_task", function(event){ 
    //do some stuff 
}); 

http://api.jquery.com/on/

+0

感谢你们,我使用live()是因为我在1.6.2是最新版本的时候启动了项目 - 可能会在未来的_some_点升级到on() – agjmills 2012-03-29 22:57:03