簡體   English   中英

滾動事件上的jQuery .addClass()不起作用

[英]jQuery .addClass() on scroll event doesn't work

我是jQuery的新手,並且在滾動事件上遇到了addClass()的問題。 這是我的代碼:

HTML:

<div class="sidebar">
    <ul>
        <li id="pop">Home</li>
        <li>Programs</li>
        <li>Replay</li>
    </ul>
 </div>

CSS:

.sidebar div {
 width: 150px;
 height: 250px;
 float: right;
 position: fixed;
 z-index: 1;
 }

 .sidebar ul {
 list-style-type: none; 
 padding-left: 0;
 position: fixed;
 }

 .sidebar li {
  background: gray;
  color: white;
  text-transform: uppercase; 
  font-size: 13px;
  width: 80px;
  }

  .active {
  width: 140px;
  background: orange;
  font-size: 25px;
  }

jQuery的:

$(document).ready(function() {
$(window).scroll(function() {

   var st = $(this).scrollTop(); 
   if( st > 500 ) {
   $("#pop").addClass("active"); 
   } else {
   $("#pop").removeClass("active"); 
   }
  }); 
 }); 

我也曾嘗試使用toggleClass()失敗。 我無法弄清楚是什么阻止了它的工作。

預先感謝您的幫助。

像這樣更改:

CSS:

刪除此:

 .sidebar li {
  background: gray;
  color: white;
  text-transform: uppercase; 
  font-size: 13px;
  width: 80px;
  }

並添加:

.normal {
  font-size: 13px;
  background: gray;
  color: white;
  text-transform: uppercase; 
  width: 80px;
  }

  .active {
  width: 140px;
  background-color:orange;
  font-size: 25px;
  text-transform: uppercase;
  color: white;
  }

HTML:

normal添加到li s

<ul>
  <li id="pop" class="normal">Home</li>
  <li class="normal">Programs</li>
  <li class="normal">Replay</li>
</ul>

jQuery的:

$(document).ready(function(){

    $(window).on("scroll",function() {

        if($(this).scrollTop() > 500) 

            $("#pop").removeClass("normal").addClass("active");

        else 

            $("#pop").removeClass("active").addClass("normal");


    })
})

最終代碼:

 <html> <title>This is test</title> <head> <style> body { height: 2500px; } .sidebar div { width: 150px; height: 250px; float: right; position: fixed; z-index: 1; } .sidebar ul { list-style-type: none; padding-left: 0; position: fixed; } .normal { font-size: 13px; background: gray; color: white; text-transform: uppercase; width: 80px; } .active { width: 140px; background-color:orange; font-size: 25px; text-transform: uppercase; color: white; } </style> </head> <body> <div class="sidebar"> <ul> <li id="pop" class="normal">Home</li> <li class="normal">Programs</li> <li class="normal">Replay</li> </ul> </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script> $(document).ready(function(){ $(window).on("scroll",function() { if($(this).scrollTop() > 500) $("#pop").removeClass("normal").addClass("active"); else $("#pop").removeClass("active").addClass("normal"); }) }) </script> </body> </html> 

使用您的CSS更具體:

<style>
  div.sidebar li.active {
  width: 140px;
  background: orange;
  font-size: 25px;
  }
</style>

https://jsfiddle.net/o266wh3r/1/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM