切换突然失效,JQuery
Toggle all the sudden won't work, JQuery
我 helped/worked 上个月有一个网站项目 hte,但现在卡住了,因为菜单的 .toggle 功能没有按预期工作。
我做了一个fiddle的完整菜单here
jQuery(document).ready(function() {
jQuery('.menuD').click(function(e) {
jQuery(this).toggleClass('active');
jQuery('.mennu').toggleClass('active');
e.preventDefault();
});
});
(这是我第一次使用 fiddle,所以我希望我输入的所有内容都正确,正如我所理解的,因为我不必包括 "head" 区域。)
我真的不明白为什么它不起作用,因为我去年为我自己的页面做了一个类似的解决方案,它可以完美地工作和验证。 Javascript 不是我最擅长的语言,因此需要一些有助于发现问题的帮助。
你打错了:
jQuery('.mennu').toggleClass('active');
必须
jQuery('.menu').toggleClass('active');
var timeoutMenu = null;
$('.trigger').on("click", function() {
$('.dropdown').toggleClass('active');
});
$('.trigger').hover(function() {
clearTimeout(timeoutMenu);
$('.dropdown').toggleClass('active');
}, function() {
setTimeout(function() {
$('.dropdown').removeClass('active');
}, 500);
});
.menu, .menu ul {
list-style:none;
cursor:pointer;
margin:0;
padding:0;
}
.menu a {
float:left;
text-decoration:none;
color:#000;
}
.menu li:hover > a {
color:#666;
}
.menu ul {
opacity:0;
visibility:hidden;
position:absolute;
top:25px;
z-index:1;
background:#666;
}
.menu li:hover > ul {
opacity:1;
visibility:visible;
}
.menu ul a {
padding:5px;
display:block;
text-transform:none;
}
.menu ul a:hover {
background-color:lightgray;
}
.trigger:hover .dropdown,
.trigger.clicked .dropdown {
display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<ul class="menu">
<li> <a class="trigger">MENU</a>
<ul class="dropdown">
<li><a href="#">Item 1</a></li>
<li><a href="#">Item 2</a></li>
<li><a href="#">Item 3</a></li>
<li><a href="#">Item 4</a></li>
<li><a href="#">Item 5</a></li>
</ul>
</li>
</ul>
我 helped/worked 上个月有一个网站项目 hte,但现在卡住了,因为菜单的 .toggle 功能没有按预期工作。
我做了一个fiddle的完整菜单here
jQuery(document).ready(function() {
jQuery('.menuD').click(function(e) {
jQuery(this).toggleClass('active');
jQuery('.mennu').toggleClass('active');
e.preventDefault();
});
});
(这是我第一次使用 fiddle,所以我希望我输入的所有内容都正确,正如我所理解的,因为我不必包括 "head" 区域。)
我真的不明白为什么它不起作用,因为我去年为我自己的页面做了一个类似的解决方案,它可以完美地工作和验证。 Javascript 不是我最擅长的语言,因此需要一些有助于发现问题的帮助。
你打错了:
jQuery('.mennu').toggleClass('active');
必须
jQuery('.menu').toggleClass('active');
var timeoutMenu = null;
$('.trigger').on("click", function() {
$('.dropdown').toggleClass('active');
});
$('.trigger').hover(function() {
clearTimeout(timeoutMenu);
$('.dropdown').toggleClass('active');
}, function() {
setTimeout(function() {
$('.dropdown').removeClass('active');
}, 500);
});
.menu, .menu ul {
list-style:none;
cursor:pointer;
margin:0;
padding:0;
}
.menu a {
float:left;
text-decoration:none;
color:#000;
}
.menu li:hover > a {
color:#666;
}
.menu ul {
opacity:0;
visibility:hidden;
position:absolute;
top:25px;
z-index:1;
background:#666;
}
.menu li:hover > ul {
opacity:1;
visibility:visible;
}
.menu ul a {
padding:5px;
display:block;
text-transform:none;
}
.menu ul a:hover {
background-color:lightgray;
}
.trigger:hover .dropdown,
.trigger.clicked .dropdown {
display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<ul class="menu">
<li> <a class="trigger">MENU</a>
<ul class="dropdown">
<li><a href="#">Item 1</a></li>
<li><a href="#">Item 2</a></li>
<li><a href="#">Item 3</a></li>
<li><a href="#">Item 4</a></li>
<li><a href="#">Item 5</a></li>
</ul>
</li>
</ul>