我是jquery的新手,到目前为止我已经有了我的代码来切换和滑动html菜单。继承我的代码
<script type="text/javascript">
$(document).ready(function () {
$('li').each(function(){
$('li.menuheader').hover(function(){
$('ul.submenu').slideToggle('slow', function(){})
});
});
});
</script>
</head>
<body>
<div id="navbar">
<ul>
<li class="menuheader">test1
<ul class="submenu">
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
<li>item 4</li>
</ul>
</li>
<li class="menuheader">test2
<ul class="submenu">
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
<li>item 4</li>
</ul>
</li>
<li class="menuheader">test3
<ul class="submenu">
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
<li>item 4</li>
</ul>
</li>
</ul>
</div>
</body>
</html>
每当鼠标悬停在菜单标题上时,我的jquery下拉每个菜单。我需要将这些分开,而不使用div id并制作单独的jquery函数。任何人都可以帮我解决这个问题吗?
答案 0 :(得分:1)
也许这就是你要找的东西(我认为需要使用slideToggle):
$('ul.submenu').hide();
$('li').each(function() {
$('li.menuheader').hover(function() {
$(this).find('ul.submenu').show('slow')
}, function() {
$(this).find('ul.submenu').hide('slow')
});
});
答案 1 :(得分:0)
您的代码会显示所有ul.submenu
,因为它们都与选择器匹配。使用$(this).find('ul.submenu')
为每个li
找到合适的。{/ p>
其次,对于每个li
,您为每个hover
绑定一个li.menuheader
处理程序。这是不必要的。
此外,hover
会在mouseenter和mouseout处触发。 mouseenter
就足够了,
$(document).ready(function () {
$('li.menuheader').mouseenter(function() {
$('ul.submenu').not(this).slideUp('slow'); // hide all
$(this).find('ul.submenu').slideDown('slow'); //
});
});
答案 2 :(得分:0)
$('li.menuheader')
==&gt;这将选择所有menuheaders
。使用this
过滤它们。
$(document).ready(function () {
$('li').each(function(){
$(this).('menuheader').hover(function(){
$(this).children('ul.submenu').slideToggle('slow', function(){
....
})
});
});
});