我有一个菜单,用于切换页面的不同部分。菜单中的每个列表项都有一个数据属性。此数据属性与我想要切换的部分的类匹配。
如何将活动菜单项的数据属性与主内容中要切换的部分的类匹配?
感谢任何帮助!
Codepen link
标记:
应用程序菜单
<ul class="tablet--nav__Parent">
<li data-name="js-classifieds--description" class="active">
<i class="icon-description"></i>
<a href="#">Description</a></li>
<li data-name="js-classifieds-specification" class="">
<i class="icon-specification"></i>
<a href="#">Specification</a>
</li>
<li data-name="js-classifieds-reviews" class="">
<i class="icon-userreviews"></i>
<a href="#">User Reviews</a></li>
<li data-name="classifieds--valuation" class="">
<i class="icon-roadtests"></i>
<a href="#">Road Tests & Reviews</a>
</li>
主要内容
<main class="main-content" role="main-content">
<div class="js-classifieds--description active">
<section class="advert-description">
<p>Asteroid Grey</p>
</section>
</div>
<div class="js-classifieds-specification">
<div>
<p>Room Beige</p>
</div>
</div>
<div class="js-classifieds-reviews">
<div>
<p>Random Review</p>
</div>
</div>
我可以在菜单上切换活动状态,并基于该类显示相关部分。然后,我将检查活动菜单项的数据属性是否与我想要切换的项目的类匹配,这是我遇到困难的部分。
我有以下JS var toggleStates = function() {
//Find all li[s] in .tablet--nav
var $tabletnavLi = $(".tablet--nav__Parent").find("li");
//Loop through them and take car of active class on current item
$($tabletnavLi).each(function() {
var $self = $(this);
$self.click(function() {
//Add active class to active tab
$self.addClass("active");
var activeElement = ($(".active").data().name);
//Remove from siblings - other elements on page
$self.siblings().removeClass("active");
});
});
};
理想情况下,我应该能够做这样的事情:
$('.main-content > div').find(activeElement).addClass('active
section').siblings().removeClass('active-section');
很遗憾,这不起作用。