[英]jQuery: Problem with ".hasClass()" function in specific case
這是我的 web 項目的一部分:
var $nav = $('#nav'), $links = $('li a'); $links.click(function() { $links.removeClass("active"); // This will be removed. $(this).addClass("active"); // This will be removed. var left = this.getBoundingClientRect().left, scrollLeft = $nav.scrollLeft(); $nav.scrollLeft(left + scrollLeft); });
::-webkit-scrollbar { display: none; } * { -ms-overflow-style: none; scrollbar-width: none; font-family: sans-serif; box-sizing: border-box; margin: 0; padding: 0; list-style: none; font-size: 34px; color: inherit; text-decoration: none; } #box { background-color: grey; height: 300px; width: 300px; overflow-y: auto; scroll-behavior: smooth; } #nav { position: fixed; width: 300px; display: flex; white-space: nowrap; color: white; overflow-y: auto; z-index: 1; scroll-behavior: smooth; } li { margin-right: 30px; }.item { width: 100%; padding: 20px; }.item-content { height: 200px; background-color: darkgrey; }.active { background-color: black; left: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="box"> <ul id="nav"> <li><a href="#one" class="active">One</a></li> <li><a href="#two">Two</a></li> <li><a href="#three">Three</a></li> <li><a href="#four">Four</a></li> <li><a href="#five">Five</a></li> <li><a href="#six">Six</a></li> </ul> <div id="items"> <div class="item" id="one"> <div class="item-content">One</div> </div> <div class="item" id="two"> <div class="item-content">Two</div> </div> <div class="item" id="three"> <div class="item-content">Three</div> </div> <div class="item" id="four"> <div class="item-content">Four</div> </div> <div class="item" id="five"> <div class="item-content">Five</div> </div> <div class="item" id="six"> <div class="item-content">Six</div> </div> </div>
我將使用另一個 function 來確定哪個鏈接是active
的。 所以$links.removeClass("active");
和$(this).addClass("active");
將被刪除。
這個function應該只判斷導航的水平滾動position。
我需要這樣的東西:
var $nav = $('#nav'); if ($('li a').hasClass('active')) { var left = this.getBoundingClientRect().left, scrollLeft = $nav.scrollLeft(); $nav.scrollLeft(left + scrollLeft); });
不幸的是,這不起作用。
您可以嘗試使用此代碼:
var $nav = $('#nav') if ($("#nav li a").hasClass('active')) { var left = this.getBoundingClientRect().left, scrollLeft = $nav.scrollLeft(); $nav.scrollLeft(left + scrollLeft); }
::-webkit-scrollbar { display: none; } * { -ms-overflow-style: none; scrollbar-width: none; font-family: sans-serif; box-sizing: border-box; margin: 0; padding: 0; list-style: none; font-size: 34px; color: inherit; text-decoration: none; } #box { background-color: grey; height: 300px; width: 300px; overflow-y: auto; scroll-behavior: smooth; } #nav { position: fixed; width: 300px; display: flex; white-space: nowrap; color: white; overflow-y: auto; z-index: 1; scroll-behavior: smooth; } li { margin-right: 30px; }.item { width: 100%; padding: 20px; }.item-content { height: 200px; background-color: darkgrey; }.active { background-color: black; left: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="box"> <ul id="nav"> <li><a href="#one">One</a></li> <li><a href="#two">Two</a></li> <li><a href="#three" class="active">Three</a></li> <li><a href="#four">Four</a></li> <li><a href="#five">Five</a></li> <li><a href="#six">Six</a></li> </ul> <div id="items"> <div class="item" id="one"> <div class="item-content">One</div> </div> <div class="item" id="two"> <div class="item-content">Two</div> </div> <div class="item" id="three"> <div class="item-content">Three</div> </div> <div class="item" id="four"> <div class="item-content">Four</div> </div> <div class="item" id="five"> <div class="item-content">Five</div> </div> <div class="item" id="six"> <div class="item-content">Six</div> </div> </div>
在這種情況下,導航應該滾動到鏈接“三”。 為什么它不起作用?
有人可以幫我嗎? 將非常感謝!
我相信你的javascript應該是這樣的
var $nav = $('#nav')
var active = $("#nav li a.active")[0];
var left = active.getBoundingClientRect().left,
scrollLeft = $nav.scrollLeft();
$nav.scrollLeft(left + scrollLeft);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.