如何删除仅在滚动事件中执行的特殊指令?
例如,我得到了这段代码:
$(document).scroll(function(){
// instructions
});
我希望“指令”仅在我的某个div显示时显示(显示:阻止)。 实际上,当我隐藏div时,我不再希望在滚动时应用指令......
我可以通过简单的“if(mySpecialVar == true){// instructions}”创建一个与我的指令相关的函数并使它们能够执行。像这样:
$(document).scroll(function(){
if(mySpecialVar==true){//instructions}
});
这样,当我隐藏或显示div时,我可以修改mySpecialVar。但我甚至不希望浏览器在没有执行指令时使这个简单的条件(对于最大优化)。
请问好吗? :)
答案 0 :(得分:0)
尝试
if($(your_div).is(":visible")){//instructions}
答案 1 :(得分:0)
您可以使用命名函数和jQuery的.on / .off方法。绑定到您不想要的事件没有意义:
// Bind
$(document).on("scroll", myScroll);
// Unbind
$(document).off("scroll", myScroll);
function myScroll() {
// Do stuff
}
答案 2 :(得分:0)
您可以使用:visible
:
$(document).scroll(function(){
if($("#mySpecialDiv").is(":visible")){
//instructions
}
});
演示:(隐藏div并滚动,什么都不会发生,显示div和滚动,你会得到一个弹出窗口)
jsfiddle
答案 3 :(得分:0)
您可以将函数保存在变量中,将其绑定到事件,然后将其删除,如下所示:
var the_function = function(){/*instructions*/};
在显示div的代码中:
$(document).on("scroll", the_function);//Attach the event
在隐藏div的代码中:
$(document).off("scroll", the_function);//Remove the event