2010-09-20 25 views
1

我使用jQuery的作为使.live()是否需要选择器才能启动?

$('.mybutton').live('click', function(){ 
    // do something 
}); 

当文档准备好,但是当文档准备好有正在使用“myButton的”类,但如果用户点击某处一种新的形式出现使用这种被称为类'mybutton'的按钮。但是,这似乎并没有工作,它没有所需的处理程序。

这是因为在那里没有'mybutton'类开始在文档准备好?

+0

$()。live应该不依赖于与选择器匹配的元素的存在或其他方面。这意味着你的问题可能在你的实现中。你可以发布你的代码/链接到你的代码? – lonesomeday 2010-09-20 14:44:09

+0

你可以使用'live'外部文件准备好。它在窗口上添加了一个事件监听器,每次启动该操作时都会检查您的jQuery选择器。 – BrunoLM 2010-09-20 14:45:40

回答

1

如果live()以往似乎并不为具有适当的选择,像你的情况.mybutton元素的工作,很可能是因为一些祖先元素.mybutton正在防止冒泡发生。

如果任何祖先一个.mybutton有:

return false; 

或:

event.stopPropagation(); 

这将有效地禁用.live().mybutton因为.live()了需要的情况下,以泡一路根。

+0

@Jas - 好。感谢您纠正我的拼写错误。 :o) – user113716 2010-09-20 15:08:12

+0

这似乎解决了这个问题,对不起早些时候不接受答案,互联网问题看到:) – wiggles 2010-09-21 19:30:17

+0

@wiggles - 没问题。 :o)很高兴为你解决。 – user113716 2010-09-21 19:34:56

0

编辑:好的,我明白了你的问题。
这更多地回答“是否选择器始终需要live()?”。


是的。
请参阅此wiki page的注意事项部分。

jquery.live()需要选择器的原因是explained here

0

也许你可以代替试试这个:

$('#myForm').delegate('.mybutton', 'click', function() { 
    // do something. 
}) 
相关问题