Javascript 动态内容鼠标悬停
我有一个动态生成的html内容:div和Javascript 动态内容鼠标悬停,javascript,jquery,css,mouseevent,Javascript,Jquery,Css,Mouseevent,我有一个动态生成的html内容:div和class='dynamicWrap'。我需要在该元素上处理鼠标悬停: $(document).on('mouseover', '.dynamicWrap', function() { console.log('test'); }); 问题是我看到“test”200次(我有200个div,使用dynamicWrapclass)。对于我悬停的确切div,如何仅处理一个事件 $(document).on('DOMNodeIns
class='dynamicWrap'
。我需要在该元素上处理鼠标悬停:
$(document).on('mouseover', '.dynamicWrap', function() {
console.log('test');
});
问题是我看到“test”200次(我有200个div,使用dynamicWrap
class)。对于我悬停的确切div,如何仅处理一个事件
$(document).on('DOMNodeInserted', function(e) {
if ($(e.target).hasClass('dynamicWrap')) {
$(e.target).mouseover(function() {
console.log('test');
});
}
});
请注意,在开始动态添加新div之前,需要运行此命令。这将在悬停时解除鼠标悬停事件的绑定:
$(".dynamicWrap").one('mouseover', function() {
//Function content here.
alert("I've been hovered! Only happen once!")
});
$(document).on('mouseover', '.dynamicWrap', function() {
console.log('test');
$(this).off('mouseover');
});
您需要使用
mouseenter
事件,而不是mouseover
。它会检测鼠标何时进入元素(使用mouseleave来检测何时退出元素)。如果我没弄错,你是想让悬停功能只发生一次吗?在jQuery上有一个函数。如果这不是你的意思,我很抱歉,请你再详细一点。@JoelHernandez是的,我希望悬停功能只发生一次。但是一个对我没有帮助。我仍然收到200个测试:($(“.dynamicWrap”).one('mouseover',function(){})可能?$(document.one('mouseover','.dynamicWrap',function(){})
?当动态生成dynamicWrap
时,这不起作用。主要思想是我应该在插入新div之前执行此代码。谢谢。处理此问题的另一种方法是在创建元素的同一函数中分配鼠标指针。这不是跨浏览器解决方案。IE将不起作用。我不知道k术语“跨浏览器解决方案”应该包括IE8,但无论如何,我关于在创建元素时将鼠标指定在其上的注释将在IE8中起作用。