我的页眉中有两个按钮,但是当我单击两个按钮时,内容是相同的。
这就像当我点击一个按钮时我同时点击了两个我不知道为什么。
我认为问题出在我的 jquery 中:
jQuery(document).ready(function($){
//open/close mega-navigation
$('.cd-dropdown-trigger ').on('click', function(event){
event.preventDefault();
toggleNav();
});
//close meganavigation
$('.cd-dropdown .cd-close ').on('click', function(event){
event.preventDefault();
toggleNav();
});
//on mobile - open submenu
$('.has-children').children('a').on('click', function(event){
//prevent default clicking on direct children of .has-children
event.preventDefault();
var selected = $(this);
selected.next('ul').removeClass('is-hidden').end().parent('.has-children').parent('ul').addClass('move-out');
});
//on desktop - differentiate between a user trying to hover over a dropdown item vs trying to navigate into a submenu's contents
var submenuDirection = ( !$('.cd-dropdown-wrapper #botao1').hasClass('open-to-left') ) ? 'right' : 'left';
$('.cd-dropdown-content').menuAim({
activate: function(row) {
$(row).children().addClass('is-active').removeClass('fade-out');
if( $('.cd-dropdown-content .fade-in').length == 0 ) $(row).children('ul').addClass('fade-in');
},
deactivate: function(row) {
$(row).children().removeClass('is-active');
if( $('li.has-children:hover').length == 0 || $('li.has-children:hover').is($(row)) ) {
$('.cd-dropdown-content').find('.fade-in').removeClass('fade-in');
$(row).children('ul').addClass('fade-out')
}
},
exitMenu: function() {
$('.cd-dropdown-content').find('.is-active').removeClass('is-active');
return true;
},
submenuDirection: submenuDirection,
});
//submenu items - go back link
$('.go-back').on('click', function(){
var selected = $(this),
visibleNav = $(this).parent('ul').parent('.has-children').parent('ul');
selected.parent('ul').addClass('is-hidden').parent('.has-children').parent('ul').removeClass('move-out');
});
function toggleNav(){
var navIsVisible = ( !$('.cd-dropdown').hasClass('dropdown-is-active') ) ? true : false;
$('.cd-dropdown').toggleClass('dropdown-is-active', navIsVisible);
$('.cd-dropdown-trigger').toggleClass('dropdown-is-active', navIsVisible);
if( !navIsVisible ) {
$('.cd-dropdown').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend',function(){
$('.has-children ul').addClass('is-hidden');
$('.move-out').removeClass('move-out');
$('.is-active').removeClass('is-active');
});
}
}
//IE9 placeholder fallback
//credits http://www.hagenburger.net/BLOG/HTML5-Input-Placeholder-Fix-With-jQuery.html
if(!Modernizr.input.placeholder){
$('[placeholder]').focus(function() {
var input = $(this);
if (input.val() == input.attr('placeholder')) {
input.val('');
}
}).blur(function() {
var input = $(this);
if (input.val() == '' || input.val() == input.attr('placeholder')) {
input.val(input.attr('placeholder'));
}
}).blur();
$('[placeholder]').parents('form').submit(function() {
$(this).find('[placeholder]').each(function() {
var input = $(this);
if (input.val() == input.attr('placeholder')) {
input.val('');
}
})
});
}
});
我的 html:
</head>
<body>
<header>
<nav class="navbar navbar-default navbar-custom" role="navigation">
<div class="container">
<a class="navbar-left" href="#"><img src="assets/img/logo-01.png" style="max-width:70px"/></a>
<div class="navbar-header navbar-left">
<button type ="button" class="navbar-toggle" data-toggle="collapse" data-target="#collapse-1">
<span class="sr-only"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="collapse navbar-collapse js-navbar-collapse">
<ul class="nav navbar-nav">
<div class="cd-dropdown-wrapper">
<button type="button" data-toggle="dropdown" id="botao1" class="btn btn-default dropdown-toggle cd-dropdown-trigger">Categorias</button>
<nav class="cd-dropdown">
<a href="#0" class="cd-close">Close</a>
<ul class="cd-dropdown-content">
<li class="has-children">
<a href="http://codyhouse.co/?p=748">Eletrodomésticos</a>
<ul class="cd-secondary-dropdown is-hidden">
<li class="go-back"><a href="#0">Menu</a></li>
<li class="see-all"><a href="http://codyhouse.co/?p=748">Todos os eletrodomésticos</a></li>
<li class="has-children">
<a href="http://codyhouse.co/?p=748">Eletrodomésticos</a>
<ul class="is-hidden">
<li class="go-back"><a href="#0">Eletrodomésticos</a></li>
<li class="see-all"><a href="http://codyhouse.co/?p=748">Todos os eletrodomésticos</a></li>
<!--<li class="has-children">-->
<li><a href="#0">Grandes Eletro de cozinha</a></li>
<!-- Funcionalidade para colocar dps outras subcategorias, não para já!
<ul class="is-hidden">
<li class="go-back"><a href="#0">Accessories</a></li>
<li class="see-all"><a href="http://codyhouse.co/?p=748">All Benies</a></li>
<li><a href="http://codyhouse.co/?p=748">Caps & Hats</a></li>
<li><a href="http://codyhouse.co/?p=748">Gifts</a></li>
<li><a href="http://codyhouse.co/?p=748">Scarves & Snoods</a></li>
</ul>-->
<!--<li class="has-children">-->
<li><a href="#0">Eletrodoméstico de Limpeza</a></li>
<!-- Funcionalidade para colocar dps outras subcategorias, não para já!
<ul class="is-hidden">
<li class="go-back"><a href="#0">Accessories</a></li>
<li class="see-all"><a href="http://codyhouse.co/?p=748">All Caps & Hats</a></li>
<li><a href="http://codyhouse.co/?p=748">Beanies</a></li>
<li><a href="http://codyhouse.co/?p=748">Caps</a></li>
<li><a href="http://codyhouse.co/?p=748">Hats</a></li>
</ul>
-->
<li><a href="http://codyhouse.co/?p=748">Peq. Eletro de Cozinha</a></li>
<li><a href="http://codyhouse.co/?p=748">Aquecimento e Climatização</a></li>
<li><a href="http://codyhouse.co/?p=748">Bricolage</a></li>
</ul>
</li>
</ul> <!-- .cd-secondary-dropdown -->
</li> <!-- .has-children -->
</ul> <!-- .cd-dropdown-content -->
</nav> <!-- .cd-dropdown -->
</div> <!-- .cd-dropdown-wrapper -->
<div class="cd-dropdown-wrapper">
<button type="button" data-toggle="dropdown" id="botao2" class="btn btn-default dropdown-toggle cd-dropdown-trigger">Supermercados</button>
<nav class="cd-dropdown">
<a href="#0" class="cd-close">Close</a>
<ul class="cd-dropdown-content">
<li class="has-children">
<a href="http://codyhouse.co/?p=748">Cona</a>
<ul class="cd-secondary-dropdown is-hidden">
<li class="go-back"><a href="#0">Menu</a></li>
<li class="see-all"><a href="http://codyhouse.co/?p=748">Todos os eletrodomésticos</a></li>
<li class="has-children">
<a href="http://codyhouse.co/?p=748">Eletrodomésticos</a>
<ul class="is-hidden">
<li class="go-back"><a href="#0">Eletrodomésticos</a></li>
<li class="see-all"><a href="http://codyhouse.co/?p=748">Todos os eletrodomésticos</a></li>
<!--<li class="has-children">-->
<li><a href="#0">Grandes Eletro de cozinha</a></li>
<!-- Funcionalidade para colocar dps outras subcategorias, não para já!
<ul class="is-hidden">
<li class="go-back"><a href="#0">Accessories</a></li>
<li class="see-all"><a href="http://codyhouse.co/?p=748">All Benies</a></li>
<li><a href="http://codyhouse.co/?p=748">Caps & Hats</a></li>
<li><a href="http://codyhouse.co/?p=748">Gifts</a></li>
<li><a href="http://codyhouse.co/?p=748">Scarves & Snoods</a></li>
</ul>-->
<!--<li class="has-children">-->
<li><a href="#0">Eletrodoméstico de Limpeza</a></li>
<!-- Funcionalidade para colocar dps outras subcategorias, não para já!
<ul class="is-hidden">
<li class="go-back"><a href="#0">Accessories</a></li>
<li class="see-all"><a href="http://codyhouse.co/?p=748">All Caps & Hats</a></li>
<li><a href="http://codyhouse.co/?p=748">Beanies</a></li>
<li><a href="http://codyhouse.co/?p=748">Caps</a></li>
<li><a href="http://codyhouse.co/?p=748">Hats</a></li>
</ul>
-->
<li><a href="http://codyhouse.co/?p=748">Peq. Eletro de Cozinha</a></li>
<li><a href="http://codyhouse.co/?p=748">Aquecimento e Climatização</a></li>
<li><a href="http://codyhouse.co/?p=748">Bricolage</a></li>
</ul>
</li>
</ul> <!-- .cd-secondary-dropdown -->
</li> <!-- .has-children -->
</ul> <!-- .cd-dropdown-content -->
</nav> <!-- .cd-dropdown -->
</div> <!-- .cd-dropdown-wrapper -->
</ul>
<form class="navbar-form navbar-left">
<div class="form-group">
<input type="text" class="form-control" placeholder="Pesquisar Produto">
</div>
<button type="submit" class="btn btn-danger">
<i class="glyphicon glyphicon-search"></i>
</button>
</form>
</div>
</div>
</div>
</nav>
</header>
我试过放置片段,但放置 cdns 链接不起作用。 如果您需要什么,请告诉我。
最佳答案
$('.cd-dropdown')
在 toggleNav
方法中选择所有具有类 cd-dropdown
的元素,而不仅仅是你选择的元素点击。
所以您的 toggleNav
方法会在调用时切换所有下拉菜单。
解决方案:
您需要将需要处理下拉列表的引用传递给toggleNav
方法
$('.cd-dropdown-trigger, .cd-dropdown .cd-close').on('click', function(event){
event.preventDefault();
toggleNav($(this).closest('.cd-dropdown-wrapper'));
});
仅在 toggleNav
内处理与该引用相关的元素
function toggleNav(dropdown){
var navIsVisible = ( !$('.cd-dropdown', dropdown).hasClass('dropdown-is-active') ) ? true : false;
$('.cd-dropdown', dropdown).toggleClass('dropdown-is-active', navIsVisible);
$('.cd-dropdown-trigger', dropdown).toggleClass('dropdown-is-active', navIsVisible);
if( !navIsVisible ) {
$('.cd-dropdown', dropdown).one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend',function(){
$('.has-children ul', dropdown).addClass('is-hidden');
$('.move-out', dropdown).removeClass('move-out');
$('.is-active', dropdown).removeClass('is-active');
});
}
}
PS:
$('selector', context)
is same ascontext.find('selector')
. You can use the second if it makes code more clear.
关于javascript - 为什么我的所有按钮的下拉内容都相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49924402/