我可以迭代for循环来创建更多javascript吗?
我需要根据mysql数据库中存储的图像记录数量,在页面加载时填充多个我可以迭代for循环来创建更多javascript吗?,javascript,jquery,Javascript,Jquery,我需要根据mysql数据库中存储的图像记录数量,在页面加载时填充多个.click()函数 到目前为止,我有一个页面可以很好地在照片之间切换,带有的图像按钮 但是我必须手工编写处理它的jquery 是否有一种方法可以使用正确数量的.js文件填充.click()函数,该函数基于数据库中的记录量。您不需要为每个唯一元素编写click() 相反,您可以使用选择器选择一组元素,例如$('a.record'),然后将单击() $('a.record').click(function() { // An
.click()
函数
到目前为止,我有一个页面可以很好地在照片之间切换,带有
的图像按钮
但是我必须手工编写处理它的jquery
是否有一种方法可以使用正确数量的
.js
文件填充.click()
函数,该函数基于数据库中的记录量。您不需要为每个唯一元素编写click()
相反,您可以使用选择器选择一组元素,例如$('a.record')
,然后将单击()
$('a.record').click(function() {
// Any `a` element with a class of `record` was clicked.
});
这样做的缺点是添加了一堆事件监听器,以后的元素不会触发它
正如其他人所提到的,使用on()
(如果使用较新的jQuery)或delegate()
(如果使用较旧的jQuery)的事件委派是最好的,因为它只附加一个事件侦听器,并且将处理附加事件后添加的未来元素
$(document).on('click', 'a.record', function() {
// Any `a` element with a class of `record` was clicked, now or in the future.
});
我在这里使用了document
,但您应该使用不会更改的最近祖先,这可能是您描述的ul
元素。除了Alex的答案之外,如果您想设置尚未存在或尚未添加到页面的元素的单击事件,您可以执行以下操作:
$(body).on('click','a.record',function(){
//any existing or future a element with class record will have this click function
});
您应该使用单个事件处理程序并将其附加到某个容器,而不是向每个元素添加单独的onclick
处理程序。所说的事件句柄将捕获所有的onclick
事件,作为DOM中的气泡