jquery小错误

时间:2011-01-07 08:46:22

标签: javascript jquery html

我是jquery和代码的新手,在这里我试图让setTimeout事件在.mouseout事件中,但我不知道该怎么做,因为我在编辑器中不断出现语法错误。这就是我所拥有的:

jQuery(document).ready(function() {
    $('.slidedown').hide(); 
    $('.trigger').hover( function(){ // enter animation

    $('.slidedown').stop(true,true).animate({
        height: ['toggle', 'swing'],
        }, 600, function() { /* animation done */ });

    }, function(){ // leave animation


$('.slidedown').mouseout()
    setTimeout( function(){
      $('.slidedown').stop(true,true).animate({
        height: '0px',
        }, 600, function() { /* animation done */ });
    }, 1000 );

  });
});

一个细小的细微差别,在这段代码中,用户将鼠标悬停在一个div上,然后另一个div滑落下来。将鼠标移动到.slidedown div应该保持打开状态,直到删除鼠标为止。但是如果用户在.trigger之后没有将鼠标移过.slidedown而是将鼠标直接从.trigger移动到另一个页面区域,那么此代码是否会折叠.slidedown div?即,我需要某种'setTimeout',只有当用户在悬停在.trigger之后没有将鼠标移动到.slidedown上时才触发。希望我有意义。谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

这一行是问题

$('.slidedown').mouseout()

它应该是

$('.slidedown').mouseout( YOUR_CALLBACK_FUNCTION )

你应该传递一个回调函数,该函数将充当事件处理程序,并且在该事件处理程序中,你可以按照你的方式调用 setTimeout()

所以正确的代码看起来像这样

$('.slidedown').mouseout( function() {
   setTimeout( function(){
      $('.slidedown').stop(true,true).animate( {
          height: '0px',
         }, 
         600, 
         function() { /* animation done */ } 
      ); // animate ends here
   }, 1000 ); // setTimeout ends here
}); // mouseout ends here

答案 1 :(得分:0)

感谢T.J和Arnab,这有效:

$(document).ready(function() {
    $('.slidedown').hide(); 
    $('.trigger').hover( function(){ // enter animation

    $('.slidedown').stop(true,true).animate({
        height: ['toggle', 'swing'],
        }, 600, function() { /* animation done */ });

    }, function(){ // leave animation

$('.slidedown').mouseout( function() {
   setTimeout( function(){
      $('.slidedown').stop(true,true).animate( {
          height: '0px',
         }, 
         600, 
         function() { /* animation done */ } 
      ); // animate ends here
   }, 1000 ); // setTimeout ends here
}); // mouseout ends here
    });
});

但我提到的另一件事是关于将鼠标移到.trigger上然后离开(但不是.slidedown)不起作用。 .slidedown刚刚开放。 :) :(我认为获得.mouseout事件对于鼠标的一个目的地有一种'允许'规则会非常复杂。