我在页面上使用class="box"
的所有DIV使用悬停效果:
的Javascript :
JQ(".box").hover(function() {
JQ(this).nextAll(".tooltip:first").css('visibility','visible');
});
JQ(".box").mouseleave(function(event) {
JQ(this).nextAll(".tooltip:first").css('visibility','hidden');
});
它在Firefox和Chrome中运行良好但在IE9和Opera中.tooltip
div消失并在鼠标在.box DIV边界内移动时不断重新出现。
有什么想法为什么为DIV的每个像素调用悬停功能?
您可以看到工作版here
答案 0 :(得分:3)
当您只将一个函数传递给.hover()
时,当鼠标 进入和离开时,调用该函数。所以,你在进入和离开时都会看到它与你的mouseleave处理程序冲突。
你可以这样做:
JQ(".box").hover(function() {
JQ(this).nextAll(".tooltip:first").css('visibility','visible');
}, function() {
JQ(this).nextAll(".tooltip:first").css('visibility','hidden');
});
或者,多一点DRY(少重复的代码):
JQ.fn.nextTip = function(vis) {
return this.nextAll(".tooltip:first").css('visibility', vis);
}
JQ(".box").hover(function() {
JQ(this).nextTip('visible');
}, function() {
JQ(this).nextTip('hidden');
});
答案 1 :(得分:1)
您应尝试使用以下代码替换hover
部分:
JQ(".box").mouseenter(function() {
JQ(this).nextAll(".tooltip:first").css('visibility','visible');
});
或保留hover
并执行:
JQ(".box").hover(function() {
JQ(this).nextAll(".tooltip:first").css('visibility','visible');
}, function(){
JQ(this).nextAll(".tooltip:first").css('visibility','hidden');
});
答案 2 :(得分:0)
停止执行此jQuery对象的事件函数
JQ(".box").hover(function() {
JQ(this).nextAll(".tooltip:first").stop(true,true).css('visibility','visible');
}, function(){
JQ(this).nextAll(".tooltip:first").stop(true,true).css('visibility','hidden');
});