本帖最后由 sugang_ximi 于 2012-12-26 11:55:19 编辑

解决方案 »

  1.   

    用hover再加上2秒的延时,并清除前一个的延时
    $(".s-fqa-item").hover(function() {
        clearTimeout($(this).data('timeout'));
         $(this).children('div[class=s-fqa-detail]').slideDown('slow');
    }, function() {
        var t = setTimeout(function() {
            $(this).children('div[class=s-fqa-detail]').slideUp('slow');
        }, 2000);
        $(this).data('timeout', t);
    });
      

  2.   

    $(".s-fqa-item").mouseenter(function(){
            $('div[class=s-fqa-detail]').slideUp('slow');
            $(this).children('div[class=s-fqa-detail]').slideDown('slow');
        }).mouseleave(function(){
            $(this).children('div[class=s-fqa-detail]').slideUp('slow');
        });
      

  3.   


    var clock;
    $(".s-fqa-item").mouseenter(function(){
    var _this = $(this);
            clearTimeout(clock);
    clock = setTimeout(function(){
    _this.children('div[class=s-fqa-detail]').slideDown('slow');
    },500);
    }).mouseleave(function(){
    $(this).children('div[class=s-fqa-detail]').slideUp('slow');
    });
      

  4.   

    hover里面的两个函数位置反了,setTimeout函数里面的$(this)不可用。
    clearTimeout函数没有用mouseenter里面的clearTimeout没效果,mouseleave里面应该加个clearTimeout。