jQuery-如果存在某个元素,则只监听滚动

时间:2014-08-13 08:08:44

标签: javascript jquery html

我只想听一下滚动事件,如果按钮的类名为" scroll_button"被展示。我想节省资源。我怎样才能实现它?

JS

$(window).scroll(function(){

});

HTML

<button class="scroll_button" style="display: none;"> click here </button>

3 个答案:

答案 0 :(得分:0)

试试此代码

$(window).scroll(function(){
  if( $('.scroll_button').css('display') != 'none' )
  {
    //do something
  }
});

答案 1 :(得分:0)

这是不可能的。作用于大于子元素的元素的事件侦听器不能依赖于子元素。

但您可以收听所有滚动事件,并在回调中检查按钮的显示状态,如下所示:http://jsfiddle.net/db27hzwk/

$(window).scroll(function(e){
    if($(".scroll-button").is(':visible')) {
        console.log("business logic");
    };
});

答案 2 :(得分:0)

根据评论,由于按钮的可见性由另一个按钮控制,您可以这样做:

$("#change").click(function () { // button that controls visibility

  $(".scroll_button").toggle(0, function () { 
    if ($(".scroll_button").is(':visible')) {
        $(window).on("scroll", function (e) { // listen to scroll
            console.log("scolling");
        });
    } else {
        $(window).off("scroll"); // stop listening to scroll
    }
  });

});

Demo