Javascript取消自定义函数并恢复
如何取消此功能?所以滚动事件被取消,我必须再次调用该函数Javascript取消自定义函数并恢复,javascript,jquery,Javascript,Jquery,如何取消此功能?所以滚动事件被取消,我必须再次调用该函数 function scroll_play() { $('.media-tbl > tbody > tr').each(function(i, element) { $(window).bind('scroll', function() { /* checks if elements are in view */ }); }); } scroll_p
function scroll_play() {
$('.media-tbl > tbody > tr').each(function(i, element) {
$(window).bind('scroll', function() {
/* checks if elements are in view */
});
});
}
scroll_play();
我特别想停止$(window).bind('scroll',
),这样我可以在另一个时间调用函数scroll\u play()
如何解决此问题?使用
对于jQuery>1.7
$(window).off('scroll');
jQuery版本您真的应该使用它。这是为了解决您的问题而开发的,用于处理滚动到视图中的元素(以及滚动到视图外的元素)
首先为观察者设置选项。例如,您可以指定在调用回调函数时元素必须可见的程度:
var options = {
rootMargin: '0px',
threshold: 1.0
}
var observer = new IntersectionObserver(callback, options);
这里我们说元素必须100%可见(阈值:1.0)->然后执行回调
然后我们定义要观看的元素:
var target = document.querySelectorAll('.media-tbl > tbody > tr');
observer.observe(target);
最后,我们定义当定义的元素滚动到视图中时应该发生什么:
var callback = function(entries, observer) {
entries.forEach(entry => {
// Each entry describes an intersection change for one observed
// target element:
});
};
如果您需要支持较旧的浏览器,请使用使用
$(窗口)。取消绑定('scroll');
.bind()从v3开始就不推荐使用,请使用打开()
和关闭()
,这样我就可以执行$(窗口)。关闭('scroll');
然后调用$(窗口)。绑定('scroll',
再次?@user892134您绝对不希望表中的每一行都有一个滚动侦听器。这会导致性能问题如果您绑定滚动事件侦听器以查看太多的元素会发生什么情况(提示,答案与现在一样,使用IO)取消绑定不推荐使用,请使用jquery v1.7 unbind()中的off()已弃用。如果使用jquery>1.7,请使用off instein条目。foreach
尝试记录条目。intersectionratio,如果此值较小,则表示它离开屏幕,否则它将进入屏幕。同时检查
var callback = function(entries, observer) {
entries.forEach(entry => {
// Each entry describes an intersection change for one observed
// target element:
});
};