首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带有doubleclick事件的Jquery .on

带有doubleclick事件的Jquery .on
EN

Stack Overflow用户
提问于 2012-11-30 04:04:32
回答 2查看 101K关注 0票数 69

为什么这会起作用:

代码语言:javascript
复制
$(document).on("dblclick", "#areaA tr:has(td)", function(e) {
     //code here
 });

这并不是

代码语言:javascript
复制
$("#areaA tr:has(td)").on('dblclick', function(e) {
    //Code here
});

我完全遵循了jquery文档页面上的示例,但是双击并没有触发。当我使用第一种方法时,它起作用了,但它似乎触发了两次事件。

这是在Kendo UI网格的上下文中。

这两段代码真的有区别吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-30 04:06:08

主要区别在于,每次单击时都会检查第一个条件中的条件。因此,如果动态添加id为areaAtrtd的元素,则只有第一个元素可以工作。

票数 54
EN

Stack Overflow用户

发布于 2017-07-31 21:39:32

您描述的第一个方法之所以有效,是因为您先选择了一个静态父元素,然后选择了一个动态子元素,这遵循了使用.on方法将事件绑定到动态创建的元素的规则。

下面是.on方法的语法,听起来您已经对其进行了一些研究。

代码语言:javascript
复制
$(selector).on(event,childSelector,data,function,map)

因此,如果我想用.on绑定到一个动态元素,我必须先用美元符号选择一个静态的父元素,然后在.on方法中选择动态子元素。在您的案例中,正确的用例应该是这样的:

代码语言:javascript
复制
$("body").on('dblclick', '#areaA tr:has(td)', function(e) {
    //Code here
});

既然你提到它不工作,我假设#areaA不是一个静态元素。您可以将body替换为更相关的静态元素,也可以将其保留为body,这并不重要。

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

https://stackoverflow.com/questions/13633789

复制
相关文章

相似问题

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