我需要根据在mysql数据库中存储的图像记录数量,在页面加载时填充多个.click()
函数。
到目前为止,我有一个页面可以很好地在带有<ul>
图像按钮的照片之间切换
但是我必须亲自编写处理它的jquery。
有没有办法可以根据数据库中的记录数量,使用正确数量的.js
函数填充.click()
文件。
答案 0 :(得分:3)
除了Alex的答案之外,如果您想设置尚未存在或尚未添加到页面的元素的点击事件,您可以这样做:
$(body).on('click','a.record',function(){
//any existing or future a element with class record will have this click function
});
答案 1 :(得分:1)
您应该使用event delegation并将单个事件处理程序附加到某个容器,而不是为每个元素添加单独的onclick
处理程序。所述事件句柄将捕获所有onclick
事件,因为通过DOM冒泡。
答案 2 :(得分:-1)
您不需要为每个唯一元素编写click()
。
相反,您可以选择一组带有选择器的元素,例如$('a.record')
然后链click()
到那个......
$('a.record').click(function() {
// Any `a` element with a class of `record` was clicked.
});
这样做的缺点是你添加了一堆事件监听器,并且不会为将来的元素触发它。
正如其他人所提到的,使用on()
(如果使用较新的jQuery)或delegate()
(如果使用旧版本)的事件委派是最佳,因为它只附加一个事件监听器,将与附加事件后添加的未来元素一起使用。
$(document).on('click', 'a.record', function() {
// Any `a` element with a class of `record` was clicked, now or in the future.
});
我在这里使用了document
,但你应该使用最近的祖先,它不会改变,可能是你所描述的ul
元素。