jQuery悬停仍然触发

时间:2010-01-10 16:19:57

标签: jquery events hover mouseout mouseleave

我有以下问题。我正在研究一个简单的jQuery工具提示,现在我正在处理一些奇怪的事情。每次我将鼠标悬停在元素上时,鼠标悬停和鼠标移出的事件都会被触发 - 因此工具提示会消失(但如果我继续移交,它会在一秒内完成很多的闪烁)。这是我的代码。

  var hint = $('<div id="hint-wrap"><div id="hintbox-top"><div id="hintbox-bottom"><div id="hintbox-topleft"><div id="hintbox-bottomleft"><div id="hint-innerwrap"><div id="hint"></div></div></div></div></div></div></div>'); // Funny I know :-D

  hint.hide();
  $('body').append( hint ); // I append it

  $('.hashint').hover(function(e){   

// Set position to cursor's
hint.css( 'left', e.pageX );
hint.css( 'top', e.pageY - 60 );

// animated append
hint.css( 'opacity', 0.2 );
hint.show();
hint.animate( { 'opacity' : 1 }, 100 );

// set text
$( "#hint" , hint).html( $( '#' + $(this).attr( 'id' ) + '-hint' ).html() ); 

 },
 function(){ // there is the problem
    hint.hide();
  });

HTML:

<div id="usernamelabel-hint" class="hinttext">Lorem Ipsum is simply dummy text of the printing and type.Lorem. <a href="#">Sign up!</a></div> <!-- This is hint text (and code) -->
<p><label><span class="hashint" id="usernamelabel">Username</span><span class="asterisk">*</span></label> <!-- ... stuff --> </p>

请问,有没有人知道为什么鼠标输出事件仍在触发并隐藏我的盒子?

非常感谢,Ondrej

2 个答案:

答案 0 :(得分:1)

首先,为什么不把HTML中的提示放在HTML文档中? 在CSS中你只需设置display:none?
然后,在显示提示时,您可以使用hint.showhint.fadeIn

我只会使用$.mouseenter$.mouseleave

示例:

$.('#usernamelabel-hint').mouseenter(function() { 
  // show or fade inn hint text
});

$.('#usernamelabel-hint').mouseleave(function() {
  // Hide or fade out hinttext
});

答案 1 :(得分:1)

可能是,你的tooltip-div覆盖了你的trigger-div?在这种情况下,出现的tooltip-div会触发trigger-div的mouseleave ..至少这是我之前发生过的事情。我通过用一个看不见的触发器div来覆盖所有东西来解决这个问题 - 不是那么漂亮,而是为我工作..