Jquery .stop不工作我应该如何理解它

时间:2012-12-11 04:20:51

标签: jquery css

   $("#LeftArrow_Wrapper, #RightArrow_Wrapper").hover(
      function () {
          $("#LeftArrow_Button, #RightArrow_Button").stop(true,true).show();
      }
   );

当我将鼠标悬停在它上面时,我只是想让它显示箭头,但是如果我多次将鼠标滑过它,它会将show功能排队,我的理解是停止只会剪切动画任何帮助都会受到赞赏。

我已将我的代码更改为此

 $("#LeftArrow_Button, #RightArrow_Button").hover(function () {
                $(this).stop(true,true).show();
            });

我仍然在排队问题

我已经解决了问题,谢谢你的答复。停止工作我的想法,我只是一个涂料,并正在更新错误的.js文件。 FACE PALM

2 个答案:

答案 0 :(得分:0)

.stop方法停止所选元素上的动画, 你是在错误的元素上停止动画:

$("#LeftArrow_Wrapper, #RightArrow_Wrapper").hover(function () {
    $(this).stop(true,true).show();
});

答案 1 :(得分:0)

根据我如何最好地了解您的情况,澄清一些事情:

(1) .hover()实际上是双重的:您通常会提供一个函数回调函数,以便mouseover执行您指定的元素另一个在你mouseout时打电话。当您只提供一个时,它会对两者执行相同的操作。

$(element).hover(
    function () {
        // to execute on mouseover
    },
    function () {
        // to execute on mouseout
    }
);

(2)在事件处理程序中,this引用了应该发生事件的元素。几乎没有必要在大多数时间再次选择元素。

$('#LeftArrow_Wrapper, #RightArrow_Wrapper').hover(function () {
    $(this).stop(true, true).show();
});

(3) .stop()停止动画。单独调用.show() 不会触发元素上的jQuery动画(因为它是瞬时的),但是调用.show(duration)例如,因为jQuery执行淡入淡出+大小一段时间。

那么,什么?

总而言之,原始代码中发生的事情是,当您将鼠标悬停在某个元素上时,它会显示 #LeftArrow_Wrapper#RightArrow_Wrapper(因为您的原来(2)),但是当你鼠标移出时它也会做同样的事情,因为你只为.hover()提供了一个回调(参见(1))。

你对.stop()的调用毫无用处是没有用的,因为它没有动画可以停止(除非在这段代码之外还有其他事情发生 - 它肯定不会停止你的呼叫.show())。

你的问题不是最详细的,所以我想你想做的是这样的:

 $('#LeftArrow_Wrapper, #RightArrow_Wrapper').hover(
    function () {
        $(this).show();
    },
    function () {
        $(this).hide();
    },
 );