【问题标题】: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() 仅适用于当前页面上存在的元素。查看livedelegate。与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() 方法做同样的事情,但它对整个文档都做,所以通常不建议使用它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-14
        • 1970-01-01
        • 2014-07-10
        相关资源
        最近更新 更多