我是JS新手,在切换show / hide时遇到了隐藏ul菜单的问题。
来源:
<ul class="main-menu">
<li class="static-content" data-leaf="true" id="contact">
<a href="contactUs.html">Contact Us</a>
</li>
<li class="" data-leaf="false" id="rules">
<a href="">Sports Betting Rules</a>
<ul class="submenu" id="submenu-rules" style="display: none;">
<li class="static-content wager-types" data-leaf="true" id=
"types">
<a href="wagerTypes.html">Wager Types</a>
</li>
<li class="static-content" data-leaf="true" id="odds">
<a href="oddsAndLines.html">Odds & Lines</a>
</li>
<li class="static-content rules-policies" data-leaf="true" id=
"policies">
<a href="rulesAndPolicies.html">Rules & Policies</a>
</li>
<li class="static-content" data-leaf="true" id="bonuses">
<a href="sportsBonuses.html">Sports Bonuses</a>
</li>
</ul>
</li>
<li class="" data-leaf="false" id="conditions">
<a href="">Terms & Conditions</a>
<ul class="submenu" id="submenu-conditions" style="display: none;">
<li class="static-content" data-leaf="true" id=
"termsOfService">
<a href="termsOfService.html">Terms of Service</a>
</li>
<li class="static-content" data-leaf="true" id="privacy">
<a href="privacy.html">Privacy Policy</a>
</li>
</ul>
</li>
<li class="static-content" data-leaf="true" id="view">
<a href="view.html">View in: Mobile | Full Site</a>
</li>
</ul>JS
// Expanding JS for sub-menus
$('.submenu').hide();
$(".li a").click(function (e) {
if ($(this).parent().data("leaf") == 'false') {
e.preventDefault();
$(this).siblings('ul').toggle();
}
return false;
});当我单击父li data-leaf为false的链接时,我需要它来toggle / show子ul,但我认为我做错了什么。
有没有人有主意?
发布于 2015-10-12 21:25:27
您可以使用数据属性来确定选择器的目标:$('li[data-leaf="false"]>a')
$(document).ready(function() {
$('.submenu').hide();
$('li[data-leaf="false"]>a').on('click', function(e) {
e.preventDefault();
console.log('hey hey');
$(this).closest('li').find('ul').toggle();
});
});<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><ul class="main-menu">
<li class="static-content" data-leaf="true" id="contact">
<a href="contactUs.html">Contact Us</a>
</li>
<li class="" data-leaf="false" id="rules">
<a href="">Sports Betting Rules</a>
<ul class="submenu" id="submenu-rules" style="display: none;">
<li class="static-content wager-types" data-leaf="true" id=
"types">
<a href="wagerTypes.html">Wager Types</a>
</li>
<li class="static-content" data-leaf="true" id="odds">
<a href="oddsAndLines.html">Odds & Lines</a>
</li>
<li class="static-content rules-policies" data-leaf="true" id=
"policies">
<a href="rulesAndPolicies.html">Rules & Policies</a>
</li>
<li class="static-content" data-leaf="true" id="bonuses">
<a href="sportsBonuses.html">Sports Bonuses</a>
</li>
</ul>
</li>
<li class="" data-leaf="false" id="conditions">
<a href="">Terms & Conditions</a>
<ul class="submenu" id="submenu-conditions" style="display: none;">
<li class="static-content" data-leaf="true" id=
"termsOfService">
<a href="termsOfService.html">Terms of Service</a>
</li>
<li class="static-content" data-leaf="true" id="privacy">
<a href="privacy.html">Privacy Policy</a>
</li>
</ul>
</li>
<li class="static-content" data-leaf="true" id="view">
<a href="view.html">View in: Mobile | Full Site</a>
</li>
</ul>
发布于 2015-10-12 21:32:30
你的代码有两个问题。
1..li不是一个类,它是html元素,所以它应该是$("li>a").click(function (e) {
false是布尔值,而不是字符串,因此请使用此if ($(this).parent().data("leaf") == false) {Your code working Demo
发布于 2015-10-12 21:36:20
只需在你的js中的li前面去掉.(点),它工作得很好!
// Expanding JS for sub-menus
$('.submenu').hide();
$("li a").click(function (e) {
if ($(this).parent().data("leaf") == 'false') {
e.preventDefault();
$(this).siblings('ul').toggle();
}
return false;
});https://stackoverflow.com/questions/33082147
复制相似问题