我有使用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的父级。当加载新文章(包含图像)时,不会触发事件。
我该如何做到这一点?
答案 0 :(得分:2)
我该如何做到这一点?
你做不到。 load
事件不会冒泡,因此无法使用事件委派。来自.on
documentation(强调我的):
在所有浏览器中,
load
,scroll
和error
事件(例如,在<img>
元素上)不会冒泡。在Internet Explorer 8及更低版本中,paste
和reset
事件不会冒泡。 此类事件不支持与委派一起使用,但可以在事件处理程序直接附加到生成事件的元素时使用它们。
只要将事件处理程序添加到文档中(例如在Ajax成功处理程序中),您所能做的就是将事件处理程序直接绑定到元素。
答案 1 :(得分:0)
你可以做一件简单的事情让它发挥作用。
AJAX调用成功完成后,使用$.trigger触发自定义事件,这只是一个字符串。 然后在父元素或任何祖先元素上监听它。