0

我有一个很难重现的问题

  • 在它 slidesDown() 之后大约 50% 的时间向上滑动。jQuery 代码非常简单:

    $( document ).ready(function() {
    var slideOptions = {
        duration: 500,
        easing: 'linear'
    };
    
    $( 'li.navtitle' ).mouseenter(function() {
        $( this ).next().slideDown();
        return false;
    });
    $( 'ul.navunit' ).mouseleave(function() {
        $( this ).find( 'li.navcontent' ).delay(800).slideUp();
        return false;
    });
    });
    

    这是HTML:

    <ul id="navigation">
      <li class="navtop">   
        <ul class="navunit">
          <li class="navtitle unselectable" unselectable="on">TITLE</li>
          <li class="navcontent"><p class="textcontent">CONTENT HERE</li>
        </ul>
      </li>
    <!-- Some more navtop/navunits... -->
    </ul>
    

    如前所述,这大约有 50% 的时间有效。但是,在许多情况下,当鼠标位于 navunit ul 中时,navcontent li 会 slideUp()。

    有人知道我做错了什么吗?

  • 4

    2 回答 2

    1

    看起来你需要stop()在动画中添加一个。JS 代码在下面,但这里有一个指向 JSFiddle 的链接,可以查看它的实际操作http://jsfiddle.net/MDpxD/

    $( document ).ready(function() {
    var slideOptions = {
        duration: 500,
        easing: 'linear'
    };
    
    $( 'li.navtitle' ).mouseenter(function() {
        $( this ).next().stop().slideDown();
        return false;
    });
    $( 'ul.navunit' ).mouseleave(function() {
        $( this ).find( 'li.navcontent' ).stop().delay(800).slideUp();
        return false;
    });
    });
    
    于 2013-04-12T12:24:54.830 回答
    -1

    这可能会发生,因为它触发了两次。尝试将其添加到函数的末尾:

        $(this).unbind("mouseenter");
    $(this).unbind("bind");
    $(this).die();
    
    于 2013-04-12T12:14:37.953 回答