首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery .on()似乎不起作用

jQuery .on()似乎不起作用
EN

Stack Overflow用户
提问于 2013-03-13 02:21:20
回答 4查看 108关注 0票数 0
代码语言:javascript
运行
复制
        $('.catNameVal').on('hover', function() {
            notyId = $(this).attr("catnameid");
            $(this).append(' <a>Delete</a>');
            $(this).unbind('mouseenter mouseleave');
        });

由于某些原因,.on()方法无法工作。我有一个向DOM添加新值的textbox,上面的代码应该是发现那些新的DOM元素。我以前也遇到过这个问题,但就是想不出问题的原因。有什么建议吗?还要记住,.live()也不能工作。

EN

回答 4

Stack Overflow用户

发布于 2013-03-13 02:23:56

如果要添加到DOM,则需要使用委托版本。

代码语言:javascript
运行
复制
$(document).on('hover', '.catNameVal', function() {
票数 3
EN

Stack Overflow用户

发布于 2013-03-13 02:27:04

你已经接近了,但是绑定并不像你想的那样是动态的。你在这里做什么:

代码语言:javascript
运行
复制
$('.catNameVal').on('hover', function() {
    notyId = $(this).attr("catnameid");
    $(this).append(' <a>Delete</a>');
    $(this).unbind('mouseenter mouseleave');
});

使用.on()将所有当前已知的匹配项绑定到'.catNameVal',这不会在事后发现DOM的新添加。您想要做的是将其绑定到一个通用的父DOM元素,以添加所有内容。document通常是一个安全的选择,因为一切都是它的孩子。然后,您将在绑定中包含过滤器:

代码语言:javascript
运行
复制
$(document).on('hover', '.catNameVal', function() {
    notyId = $(this).attr("catnameid");
    $(this).append(' <a>Delete</a>');
    $(this).unbind('mouseenter mouseleave');
});

这样做的作用是将实际的事件绑定到document,但在计算事件时应用'.catNameVal'的选择器。因此,所有冒泡到document的匹配事件都将被评估,并根据筛选器进行检查,如果匹配,则执行。这会捕获后期添加的DOM元素,因为它们仍然会冒泡到document

票数 2
EN

Stack Overflow用户

发布于 2013-03-13 02:23:53

悬停不是标准事件。你不能检查鼠标悬停,它必须是鼠标输入。

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

https://stackoverflow.com/questions/15369079

复制
相关文章

相似问题

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