jQuery:slideDown()向上滑动

时间:2013-04-12 12:12:11

标签: jquery html slidedown

我有一个很难重现的问题,

  • 在slideDown()之后大约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将会滑动()。

    任何人都知道我做错了什么?

  • 2 个答案:

    答案 0 :(得分: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;
    });
    });
    

    答案 1 :(得分:-1)

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

        $(this).unbind("mouseenter");
    $(this).unbind("bind");
    $(this).die();