$('.catNameVal').on('hover', function() {
notyId = $(this).attr("catnameid");
$(this).append(' <a>Delete</a>');
$(this).unbind('mouseenter mouseleave');
});
由于某些原因,.on()
方法无法工作。我有一个向DOM添加新值的textbox,上面的代码应该是发现那些新的DOM元素。我以前也遇到过这个问题,但就是想不出问题的原因。有什么建议吗?还要记住,.live()
也不能工作。
发布于 2013-03-13 02:23:56
如果要添加到DOM,则需要使用委托版本。
$(document).on('hover', '.catNameVal', function() {
发布于 2013-03-13 02:27:04
你已经接近了,但是绑定并不像你想的那样是动态的。你在这里做什么:
$('.catNameVal').on('hover', function() {
notyId = $(this).attr("catnameid");
$(this).append(' <a>Delete</a>');
$(this).unbind('mouseenter mouseleave');
});
使用.on()
将所有当前已知的匹配项绑定到'.catNameVal'
,这不会在事后发现DOM的新添加。您想要做的是将其绑定到一个通用的父DOM元素,以添加所有内容。document
通常是一个安全的选择,因为一切都是它的孩子。然后,您将在绑定中包含过滤器:
$(document).on('hover', '.catNameVal', function() {
notyId = $(this).attr("catnameid");
$(this).append(' <a>Delete</a>');
$(this).unbind('mouseenter mouseleave');
});
这样做的作用是将实际的事件绑定到document
,但在计算事件时应用'.catNameVal'
的选择器。因此,所有冒泡到document
的匹配事件都将被评估,并根据筛选器进行检查,如果匹配,则执行。这会捕获后期添加的DOM元素,因为它们仍然会冒泡到document
。
发布于 2013-03-13 02:23:53
悬停不是标准事件。你不能检查鼠标悬停,它必须是鼠标输入。
https://stackoverflow.com/questions/15369079
复制相似问题