使用.on()动态使用load()事件

时间:2013-07-17 16:37:36

标签: jquery ajax events

我有使用ajax动态加载的新文章,我想在加载图像时对它们执行某些操作。

所有文章都在一个名为#tracks的div中,所以这就是我访问文章形象的方式:'#tracks article div'。

每次使用ajax加载新帖子时,以及我们第一次加载页面时,我想调用一个函数。

$('#tracks').on('load', 'article img', function() {blabla})

我尝试过这样做,但它不起作用,因为只能在与网址关联的元素上调用load事件。但是你可以看到每个图像都会调用该事件(与网址相关),但由于父级是#tracks(与网址无关的div),它似乎不起作用(此事件永远不会得到)触发)。

我也试过这个:

$(window).on('load', '#tracks article img', function() {blabla})

但是窗口似乎不是我的#tracks div的父级。当加载新文章(包含图像)时,不会触发事件。

我该如何做到这一点?

2 个答案:

答案 0 :(得分:2)

  

我该如何做到这一点?

你做不到。 load事件不会冒泡,因此无法使用事件委派。来自.on documentation(强调我的):

  

在所有浏览器中,loadscrollerror事件(例如,在<img>元素上)不会冒泡。在Internet Explorer 8及更低版本中,pastereset事件不会冒泡。 此类事件不支持与委派一起使用,但可以在事件处理程序直接附加到生成事件的元素时使用它们。


只要将事件处理程序添加到文档中(例如在Ajax成功处理程序中),您所能做的就是将事件处理程序直接绑定到元素。

答案 1 :(得分:0)

你可以做一件简单的事情让它发挥作用。

AJAX调用成功完成后,使用$.trigger触发自定义事件,这只是一个字符串。 然后在父元素或任何祖先元素上监听它。