在鼠标滚轮滚动期间阻止 Jquery hoverIntent
Prevent Jquery hoverIntent during mouse wheel scrolling
我正在制作一个素材库。我有一页缩略图。当用户将鼠标悬停在缩略图上时,会弹出相应的视频(在 jquery 对话框中)。我注意到,当我使用鼠标滚轮滚动页面时,我的光标经常会快速经过很多图像,并且我会看到一堆视频一个接一个地快速弹出和消失,这是不受欢迎的。所以我添加了一些代码来检测滚动,这解决了这个问题——除了当滚动停止时,如果光标最终停留在其中一张图像上,则不会触发弹出视频。我必须将鼠标移到另一个图像上才能触发弹出窗口。是否有任何我可以添加或更改以触发视频的内容,光标是否应该在滚动结束时落在图库图像上?我正在使用 hoverIntent,但同样适用于标准 jquery 悬停。代码的相关部分是:
var notScrolling = true;
$(window).scroll(function() {
notScrolling = false;
clearTimeout($.data(this, 'scrollTimer'));
$.data(this, 'scrollTimer', setTimeout(function() {
notScrolling = true;
}, 250));
});
// When the window is not being scrolled, and the mouse enters a gallery item,
// the corresponding pop-up will open and any other pop-up will be closed:
$.each(galleryAnchorArray, function( index, value ){
var galleryThis = value;
var hoverThisAndCloseOthers = function() {
hoveringId = index;
if (notScrolling == true) {OpenPopup(); CloseOthers()}};
$(galleryThis).hoverIntent(hoverThisAndCloseOthers, hovOutDoNothing)
});
当滚动停在一个图像上时,该图像的悬停事件已经发生并且您的 if (notScrolling == true)
已阻止它,因此您需要做的是 再次触发悬停事件喜欢
$.data(this, 'scrollTimer', setTimeout(function() {
notScrolling = true;
//your hover event or function corresponding to that event here
hoverThisAndCloseOthers();//just an eg. how you use this is up to you
}, 250));
非常感谢shaN的帮助!以下内容现在几乎按照我想要的方式工作,尽管当我在快速滚动后停下来时,我的光标略微高于或低于缩略图,附近缩略图的弹出视频被触发。我完全可以接受,但也许我会玩弄计时器值(毫秒)。
var notScrolling = true;
$.each(galleryAnchorArray, function( index, value ){
var galleryThis = value;
var hoverThisAndCloseOthers = function() {
hoveringId = index;
if (notScrolling == true) {OpenPopup(); CloseOthers()};
$(window).scroll(function() {
notScrolling = false;
clearTimeout($.data(this, 'scrollTimer'));
$.data(this, 'scrollTimer', setTimeout(function() {
notScrolling = true;
OpenPopup();
CloseOthers()
}, 250));
});
};
$(galleryThis).hoverIntent(hoverThisAndCloseOthers, hovOutDoNothing);
});
我正在制作一个素材库。我有一页缩略图。当用户将鼠标悬停在缩略图上时,会弹出相应的视频(在 jquery 对话框中)。我注意到,当我使用鼠标滚轮滚动页面时,我的光标经常会快速经过很多图像,并且我会看到一堆视频一个接一个地快速弹出和消失,这是不受欢迎的。所以我添加了一些代码来检测滚动,这解决了这个问题——除了当滚动停止时,如果光标最终停留在其中一张图像上,则不会触发弹出视频。我必须将鼠标移到另一个图像上才能触发弹出窗口。是否有任何我可以添加或更改以触发视频的内容,光标是否应该在滚动结束时落在图库图像上?我正在使用 hoverIntent,但同样适用于标准 jquery 悬停。代码的相关部分是:
var notScrolling = true;
$(window).scroll(function() {
notScrolling = false;
clearTimeout($.data(this, 'scrollTimer'));
$.data(this, 'scrollTimer', setTimeout(function() {
notScrolling = true;
}, 250));
});
// When the window is not being scrolled, and the mouse enters a gallery item,
// the corresponding pop-up will open and any other pop-up will be closed:
$.each(galleryAnchorArray, function( index, value ){
var galleryThis = value;
var hoverThisAndCloseOthers = function() {
hoveringId = index;
if (notScrolling == true) {OpenPopup(); CloseOthers()}};
$(galleryThis).hoverIntent(hoverThisAndCloseOthers, hovOutDoNothing)
});
当滚动停在一个图像上时,该图像的悬停事件已经发生并且您的 if (notScrolling == true)
已阻止它,因此您需要做的是 再次触发悬停事件喜欢
$.data(this, 'scrollTimer', setTimeout(function() {
notScrolling = true;
//your hover event or function corresponding to that event here
hoverThisAndCloseOthers();//just an eg. how you use this is up to you
}, 250));
非常感谢shaN的帮助!以下内容现在几乎按照我想要的方式工作,尽管当我在快速滚动后停下来时,我的光标略微高于或低于缩略图,附近缩略图的弹出视频被触发。我完全可以接受,但也许我会玩弄计时器值(毫秒)。
var notScrolling = true;
$.each(galleryAnchorArray, function( index, value ){
var galleryThis = value;
var hoverThisAndCloseOthers = function() {
hoveringId = index;
if (notScrolling == true) {OpenPopup(); CloseOthers()};
$(window).scroll(function() {
notScrolling = false;
clearTimeout($.data(this, 'scrollTimer'));
$.data(this, 'scrollTimer', setTimeout(function() {
notScrolling = true;
OpenPopup();
CloseOthers()
}, 250));
});
};
$(galleryThis).hoverIntent(hoverThisAndCloseOthers, hovOutDoNothing);
});