jquery 选择器在 load() 之后停止工作
简而言之,我有一个页面,其中的内容正在使用 jquery load() 加载。问题是当我尝试选择时。
$('a.selected_class').click(function(e){
alert('alert');
e.preventDefault();
});
(在文档内就绪)在第一页上工作,但在任何后续页面(使用 $(this).load(url); 加载到 div 中),选择器停止工作。
有什么建议吗?
in short, i have a page where the content is being loaded with jquery load(). the problem is when i am trying to select.
$('a.selected_class').click(function(e){
alert('alert');
e.preventDefault();
});
(inside document ready) works on the first page, but on any subsequent pages (that are loaded using $(this).load(url); into a div), the selector stops working.
any tips?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
click()
仅适用于当前页面上存在的元素。查看live
和委托
。对于live
:正如 patrick dw 提到的,如果可能的话,
delegate
是首选。click()
only will work on elements that exist on the page currently. Check outlive
anddelegate
. Withlive
:As patrick dw mentions,
delegate
is preferred if possible.这并不是说它停止工作。它仅将点击处理程序绑定到运行时(页面加载时)存在的那些元素。
您可以在
< 上放置
动态的被加载到。.delegate()
处理程序;div>该处理程序放置在
#mydiv
元素上,当click
事件冒泡到它时,它会测试该事件是否发生在与匹配的元素上>a.selected_class
。.live()
方法执行相同的操作,但它针对整个文档执行此操作,因此通常不建议使用该方法。It isn't that it stops working. It is that it only binds
click
handlers to those elements that exist when it runs (on page load).You can place a
.delegate()
handler on the<div>
that the dynamic ones are loaded into.The handler is placed on the
#mydiv
element, and when theclick
event bubbles up to it, it tests to see if the event took place on an element that matchesa.selected_class
.The
.live()
method does the same thing, but it does it for the entire document, so it normally isn't an advisable method to use.