我使用jQuery .animate()移动一次项目,但它似乎以100px的增量多次移动。是因为鼠标悬停?
var ww = $(window).width();
$(document).on('mouseover', '#myTarget', function () {
var dp = $(this).offset().left;
if ((ww - dp) < 150) {
$('.myDiv.active').animate({left:'-=100px'},500);
}
});
答案 0 :(得分:1)
鼠标悬停在目标上时,会重复发送鼠标悬停事件。您可能需要mouseenter和mouseleave
答案 1 :(得分:1)
$(document).one('mouseover', '#myTarget', function () {
var dp = $(this).offset().left;
if ((ww - dp) < 150) {
$('.myDiv.active').animate({left:'-=100px'},500);
}
});
答案 2 :(得分:1)
将其更改为
$(document).on('mouseenter', '#myTarget', function () {
会更好。每次鼠标进入或离开元素或其中一个子元素时,都会触发mouseover
事件。 mouseenter
不会发生这种情况。 example here显示了这一点。
请参阅this answer以获取类似问题以及所提供示例的来源。