3

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

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

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

有小费吗?

4

2 回答 2

6

click()仅适用于当前页面上存在的元素。签出livedelegate。与live

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

正如 patrick dw 提到的,delegate如果可能的话,是首选。

于 2011-01-10T02:18:38.610 回答
3

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

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

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

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

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

于 2011-01-10T02:19:45.557 回答