【问题标题】:jquery selector stops working after load()jQuery 选择器在 load() 后停止工作
【发布时间】:2011-01-10 02:16:37
【问题描述】:
简而言之,我有一个使用 jquery load() 加载内容的页面。问题是当我尝试选择时。
$('a.selected_class').click(function(e){
alert('alert');
e.preventDefault();
});
(内部文档就绪)在第一页上工作,但在任何后续页面上(使用 $(this).load(url); 加载到 div 中),选择器停止工作。
有什么建议吗?
【问题讨论】:
标签:
jquery
jquery-selectors
css-selectors
jquery-load
【解决方案1】:
click() 仅适用于当前页面上存在的元素。查看live 和delegate。与live:
$('a.selected_class').live("click", function(e){
alert('alert');
e.preventDefault();
});
正如 patrick dw 所说,如果可能,delegate 是首选。
【解决方案2】:
并不是说它停止工作。它只将click 处理程序绑定到运行时(页面加载时)存在的那些元素。
您可以将.delegate() 处理程序放在加载动态处理程序的<div> 上。
$('#mydiv').delegate('a.selected_class','click',function(e){
alert('alert');
e.preventDefault();
});
处理程序放置在#mydiv 元素上,当click 事件冒泡到它时,它会测试该事件是否发生在与a.selected_class 匹配的元素上。
.live() 方法做同样的事情,但它对整个文档都做,所以通常不建议使用它。