我可以迭代for循环来创建更多的javascript吗?

时间:2012-03-26 22:08:29

标签: javascript jquery

我需要根据在mysql数据库中存储的图像记录数量,在页面加载时填充多个.click()函数。

到目前为止,我有一个页面可以很好地在带有<ul>图像按钮的照片之间切换

但是我必须亲自编写处理它的jquery。

有没有办法可以根据数据库中的记录数量,使用正确数量的.js函数填充.click()文件。

3 个答案:

答案 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元素。