$(document).ready(function() {
$(".r-product-page #menu > li > a").click(function() {
$('ul.sub-menu').not($(this).siblings()).slideUp("slow");
$(this).siblings("ul.sub-menu").slideToggle("slow", function() {
$(this).siblings('.dropdown-arrow').css({
'transform': 'rotate(180deg)'
})
});
});
$(".r-product-page #menu #one").click(function() {
$(".product-container").load("productOne.html");
})
});
.r-product-page {
width: 100%;
height: 100%;
display: flex;
flex-direction: row;
}
.r-product-page #menu {
height: 100%;
width: 300px;
}
.r-product-page #menu .product-menu {
color: #4d4d49;
font-size: 18px;
}
.r-product-page #menu .product-menu .sub-menu {
display: none;
}
.r-product-page #menu .product-menu .sub-menu li {
color: #898989;
font-family: 18px;
}
ul {
list-style: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="r-product-page container">
<ul style="margin-top:5rem;" id="menu">
<li class="product-menu"><img class="dropdown-arrow" src="https://s1.postimg.org/211j5w7oqn/products_dropdown_arrow.png" alt="New york">
<a href="#">template A</a>
<ul class="sub-menu">
<li>x</li>
<li>y</li>
<li>z</li>
<li>l</li>
<li>m</li>
<li>n</li>
</ul>
</li>
<li class="product-menu"><img class="dropdown-arrow" src="https://s1.postimg.org/211j5w7oqn/products_dropdown_arrow.png" alt="New york">
<a href="#">Template B</a>
<ul class="sub-menu">
<li><a href="#">3.1</a>
</li>
</ul>
</li>
<li class="product-menu" id="one"><a href="#">Template C</a>
</li>
<li class="product-menu"><a href="#">Template D</a>
</li>
<li class="product-menu"><a href="#">Template E</a>
</li>
<li class="product-menu"><a href="#">Template F</a>
</li>
</ul>
<div class="product-container" />
</div>
欲了解更多信息,
我的jsfiddle演示在这里
在这里,我要做的是,当用户点击带有下拉箭头的任何菜单时,它应该关闭过去的openend菜单并将下拉箭头旋转180度。
现在,我可以关闭非活动链接的子菜单,但是我无法将下拉箭头旋转180度以进行非活动链接。那我该怎么做呢?
答案 0 :(得分:1)
您可以将active
课程添加到product-menu
并使用css处理transformation
。
$(document).ready(function() {
$(".r-product-page #menu > li > a").click(function() {
$('ul.sub-menu').not($(this).siblings()).slideUp("slow").parents('.product-menu').removeClass('active');
$(this).siblings("ul.sub-menu").slideToggle("slow", function() {
if ($(this).parents('.product-menu').hasClass('active')) {
$(this).parents('.product-menu').removeClass('active')
} else $(this).parents('.product-menu').addClass('active');
});
});
$(".r-product-page #menu #one").click(function() {
$(".product-container").load("productOne.html");
})
});
.r-product-page {
width: 100%;
height: 100%;
display: flex;
flex-direction: row;
}
.r-product-page #menu {
height: 100%;
width: 300px;
}
.r-product-page #menu .product-menu {
color: #4d4d49;
font-size: 18px;
}
.r-product-page #menu .product-menu .sub-menu {
display: none;
}
.r-product-page #menu .product-menu .sub-menu li {
color: #898989;
font-family: 18px;
}
ul {
list-style: none;
}
.product-menu .dropdown-arrow {
transition: transform .2s;
}
.product-menu.active .dropdown-arrow {
transform: rotate(180deg)
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="r-product-page container">
<ul style="margin-top:5rem;" id="menu">
<li class="product-menu"><img class="dropdown-arrow" src="https://s1.postimg.org/211j5w7oqn/products_dropdown_arrow.png" alt="New york">
<a href="#">template A</a>
<ul class="sub-menu">
<li>x</li>
<li>y</li>
<li>z</li>
<li>l</li>
<li>m</li>
<li>n</li>
</ul>
</li>
<li class="product-menu"><img class="dropdown-arrow" src="https://s1.postimg.org/211j5w7oqn/products_dropdown_arrow.png" alt="New york">
<a href="#">Template B</a>
<ul class="sub-menu">
<li><a href="#">3.1</a>
</li>
</ul>
</li>
<li class="product-menu" id="one"><a href="#">Template C</a>
</li>
<li class="product-menu"><a href="#">Template D</a>
</li>
<li class="product-menu"><a href="#">Template E</a>
</li>
<li class="product-menu"><a href="#">Template F</a>
</li>
</ul>
<div class="product-container" />
</div>
答案 1 :(得分:1)
最佳方式&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &GT;&GT;&GT;&GT;&GT;&GT;&GT;
$(this).siblings("ul.sub-menu").slideToggle("slow", function() {
if($(this).parents('.product-nav').hasClass('active')){
$(this).parents('.product-nav').removeClass('active')
}
else $(this).parents('.product-nav').addClass('active');
});
答案 2 :(得分:1)
请检查一下
$(document).ready(function () {
$(".r-product-page #menu > li > a").click(function () {
$(this).siblings(".sub-menu").slideToggle(300);
$(this).siblings('.dropdown-arrow').toggleClass('close');
$(this).parent('li').siblings('li').children(".sub-menu").slideUp(300);
$(this).parent('li').siblings('li').children('.dropdown-arrow').removeClass('close');
});
});
&#13;
.r-product-page {
width: 100%;
height: 100%;
display: flex;
flex-direction: row;
}
.r-product-page #menu {
height: 100%;
width: 300px;
}
.r-product-page #menu .product-menu {
color: #4d4d49;
font-size: 18px;
}
.r-product-page #menu .product-menu .sub-menu {
display: none;
}
.r-product-page #menu .product-menu .sub-menu li {
color: #898989;
font-family: 18px;
}
ul {
list-style: none;
}
.dropdown-arrow.close{
transform: rotate(180deg);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="r-product-page container">
<ul style="margin-top:5rem;" id="menu">
<li class="product-menu"><img class="dropdown-arrow" src="https://s1.postimg.org/211j5w7oqn/products_dropdown_arrow.png" alt="New york">
<a href="#">template A</a>
<ul class="sub-menu">
<li>x</li>
<li>y</li>
<li>z</li>
<li>l</li>
<li>m</li>
<li>n</li>
</ul>
</li>
<li class="product-menu"><img class="dropdown-arrow" src="https://s1.postimg.org/211j5w7oqn/products_dropdown_arrow.png" alt="New york">
<a href="#">Template B</a>
<ul class="sub-menu">
<li><a href="#">3.1</a>
</li>
</ul>
</li>
<li class="product-menu" id="one"><a href="#">Template C</a>
</li>
<li class="product-menu"><a href="#">Template D</a>
</li>
<li class="product-menu"><a href="#">Template E</a>
</li>
<li class="product-menu"><a href="#">Template F</a>
</li>
</ul>
<div class="product-container" ></div>
</div>
&#13;