就像当我点击一个按钮时,我点击了两个,我不知道为什么。
我认为问题出在我的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链接。 如果您需要什么,请告诉我。
答案 0 :(得分:2)
$('.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)
与context.find('selector')
相同。 如果它使代码更清晰,你可以使用第二个。
答案 1 :(得分:0)
您的代码不知道如何区分按钮。 要解决此问题,请为每个按钮添加“id”。请参阅随附的“代码段”,其中描述了具有不同“id”的2个按钮:s。
如果div中有菜单链接文本,则相同的解决方案有效。 然后,您需要为处理菜单链接的每个div添加“id”。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
#button-1 {
height: 50px;
width: 100px;
background-color: pink;
}
#button-2 {
height: 50px;
width: 100px;
background-color: lightblue;
}
</style>
</head>
<body>
<button id="button-1" type="button" name="button">button-1</button>
<button id="button-2" type="button" name="button">button-2</button>
</body>
</html>