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

当我将鼠标悬停在它上面时,我只想让它显示箭头,但是如果我在它上面多次滑动鼠标,它会排队显示功能,我的理解是停止只会切断动画,任何帮助都将不胜感激。

我已经将我的代码更改为这个

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

我仍然遇到排队问题

嗯,我已经解决了这个问题,谢谢你的回复。Stop 确实按照我的想法工作,我只是个笨蛋,正在更新错误的 .js 文件。掌心

4

2 回答 2

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 动画(因为它是瞬时的),但调用会触发,例如,因为 jQuery 在持续时间内执行淡入淡出 + 大小。.show(duration)

所以呢?

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

你的调用.stop()是无用的,因为没有动画让它停止(除非在这段代码之外发生了其他事情——它肯定不会停止你对 的调用.show())。

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

 $('#LeftArrow_Wrapper, #RightArrow_Wrapper').hover(
    function () {
        $(this).show();
    },
    function () {
        $(this).hide();
    },
 );
于 2012-12-11T04:36:36.483 回答
0

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

$("#LeftArrow_Wrapper, #RightArrow_Wrapper").hover(function () {
    $(this).stop(true,true).show();
});
于 2012-12-11T04:25:37.150 回答