hasClass有什么问题

时间:2015-04-21 00:59:56

标签: javascript jquery

第6行中!$catalog.hasClass('catalog-fixed')的值始终为真

$(window).scroll(function(){
      var $catalog = $(".catalog-brief");
      var sideTop = $catalog.offset().top;
      if (sideTop < 1000){
           // always true
           if (!$catalog.hasClass('catalog-fixed')) $catalog.addClass("catalog-fixed");
      } else {
           if ($catalog.hasClass('catalog-fixed')) $catalog.removeClass("catalog-fixed");
     }
})

但这很好用

var $catalog = $(".catalog-brief");
var sideTop = $catalog.offset().top;
$(window).scroll(function(){
      if (sideTop < 1000){
           if (!$catalog.hasClass('catalog-fixed')) $catalog.addClass("catalog-fixed");
      } else {
           if ($catalog.hasClass('catalog-fixed')) $catalog.removeClass("catalog-fixed");
     }
})

我犯了什么错误吗?

2 个答案:

答案 0 :(得分:1)

尝试使用window.scrollY代替当前sideTop。或$(window).scrollTop()如果你想使用Jquery。

$(window).scroll(function(){
      var $catalog = $(".catalog-brief");

      // if ($(window).scrollTop() < 1000) {
      if (window.scrollY < 1000) {
           if (!$catalog.hasClass('catalog-fixed')) $catalog.addClass("catalog-fixed");

      } else {
           if ($catalog.hasClass('catalog-fixed')) $catalog.removeClass("catalog-fixed");
     }
});

答案 1 :(得分:0)

你可以试试这个:

  var $catalog = $(".catalog-brief");
  var sideTop = $catalog.offset().top;
  $(window).scroll(function(){
      (sideTop < 1000) &&  ($catalog.toggleClass("catalog-fixed"))
  })

请参阅:https://stackoverflow.com/a/11069385/1845408