0

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

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

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

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

我试过这样做,但它不起作用,因为加载事件只能在与 url 关联的元素上调用。但是如您所见,该事件在每张图像上都被调用(与 url 相关),但是因为父级是#tracks(与 url 无关的 div),它似乎不起作用(这个事件永远不会得到触发)。

我也试过这个:

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

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

我怎样才能使这项工作?

4

2 回答 2

2

我怎样才能使这项工作?

你不能。该load事件不会冒泡,因此无法使用事件委托。从.on文档(强调我的):

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


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

于 2013-07-17T16:43:40.550 回答
0

你可以做一件简单的事情来完成这项工作。

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

于 2013-07-17T16:46:00.217 回答