首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以遍历for循环来创建更多的javascript吗?

我可以遍历for循环来创建更多的javascript吗?
EN

Stack Overflow用户
提问于 2012-03-27 06:08:29
回答 3查看 86关注 0票数 1

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

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

但我必须手写处理它的jquery。

有没有一种方法可以根据数据库中的记录量用正确数量的.click()函数填充.js文件?

EN

回答 3

Stack Overflow用户

发布于 2012-03-27 06:12:49

除了Alex的回答之外,如果您想设置尚不存在或尚未添加到页面中的元素的单击事件,您可以这样做:

代码语言:javascript
运行
复制
$(body).on('click','a.record',function(){
    //any existing or future a element with class record will have this click function
});
票数 3
EN

Stack Overflow用户

发布于 2012-03-27 06:15:31

您应该使用event delegation并将单个事件处理程序附加到某个容器,而不是向每个元素添加单独的onclick处理程序。所述事件处理将捕获所有的onclick事件,因为气泡通过DOM向上。

票数 1
EN

Stack Overflow用户

发布于 2012-03-27 06:10:44

您不需要为每个唯一的元素编写click()

相反,您可以使用选择器选择一组元素,例如$('a.record'),然后将click()链接到该元素...

代码语言:javascript
运行
复制
$('a.record').click(function() {
   // Any `a` element with a class of `record` was clicked.
});

这样做的缺点是您添加了一堆事件侦听器,并且它不会为将来的元素触发。

正如其他人所提到的,使用on() (如果使用较新的jQuery)或delegate() (如果使用较旧的and )的事件委派是最好的,因为它只附加一个事件侦听器,并且可以处理附加事件之后添加的未来元素。

代码语言:javascript
运行
复制
$(document).on('click', 'a.record', function() {
   // Any `a` element with a class of `record` was clicked, now or in the future.
});

我在这里使用了document,但是您应该使用不会更改的最近祖先,它可能就是您所描述的ul元素。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9880600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档