如何将jQuery绑定事件发送到通过Ajax加载的元素?

时间:2010-03-10 01:01:28

标签: jquery ajax events binding load

我正在使用.load()函数加载一段html,其中包含一些绑定到某个类的jQuery功能。 = /

想法?

5 个答案:

答案 0 :(得分:9)

使用直播活动:

$('.className').live(function(event) {
   ...
}

在这种情况下,jQuery会保留所有实时选择器的存储库,例如.className。它还为文档添加了一个处理程序,以监听冒泡到文档的事件。然后,这个特殊的处理程序基本上会遍历所有实时选择器,并将事件转发给与实时选择器匹配的元素(如果有的话)。

如果任何中间事件处理程序拦截事件并在它到达文档之前阻止它进一步传播,则live处理程序将不会被执行。

答案 1 :(得分:5)

如果您使用点击事件,这将是您的语法:

   $('a.myClass').live("click", function() {

        // do something here

    });

答案 2 :(得分:2)

您需要使用JQuery's live function。这允许您:

  

为现在或将来与当前选择器匹配的所有元素附加处理程序。

答案 3 :(得分:1)

您可以使用on()功能。

像这样:

$(".existingElement").on('click', '.addedByAjax .className', function(){
  // ... do whatever
}

请注意,nowElement必须存在于此段代码运行的那一刻。 因此,您必须绑定到一个元素,您将通过ajax 将其加载到中,并使用第二个选择器(on()函数中的一个)来匹配添加的内容

答案 4 :(得分:0)

您必须在设置html后手动绑定事件。

$.post('ajax/test.html', function(data) {
  $('.result').html(data);
  $('.result a').click(function() {
    alert('click');
  });
});

此外,您可以使用live来帮助它。