jquery选择器在load()后停止工作

时间:2011-01-10 02:16:38

标签: jquery jquery-selectors css-selectors jquery-load

简而言之,我有一个页面,其中内容正在使用jquery load()加载。问题是当我试图选择时。

$('a.selected_class').click(function(e){
 alert('alert');
 e.preventDefault();
});

(内部文档准备好)在第一页上工作,但在任何后续页面(使用$(this).load(url);加载到div)中,选择器停止工作。

任何提示?

2 个答案:

答案 0 :(得分:6)

click()仅适用于当前页面上存在的元素。查看livedelegate。使用live

$('a.selected_class').live("click", function(e){
 alert('alert');
 e.preventDefault();
});

正如帕特里克所提到的那样,如果可能的话,delegate是首选。

答案 1 :(得分:3)

不是它停止工作。它只是将click处理程序绑定到运行时存在的那些元素(在页面加载时)。

您可以在<div>上放置动态加载的.delegate()处理程序。

$('#mydiv').delegate('a.selected_class','click',function(e){
   alert('alert');
   e.preventDefault();
});

处理程序放在#mydiv元素上,当click事件冒泡到它时,它会测试事件是否发生在匹配a.selected_class的元素上。

.live()方法做同样的事情,但它是为整个文档做的,所以它通常不是一个可行的方法。