jquery li ul子菜单问题
我有一个问题,我想制作一个jquery子菜单,如下所示:jquery li ul子菜单问题,jquery,slidetoggle,jquery-hover,Jquery,Slidetoggle,Jquery Hover,我有一个问题,我想制作一个jquery子菜单,如下所示: <ul id="submenu" class="menu"> <li class="item-1"><a href="test.html">Test 1</a></li> <li class="item-2 deeper parent"> <a href="test.html">Test 2</a>
<ul id="submenu" class="menu">
<li class="item-1"><a href="test.html">Test 1</a></li>
<li class="item-2 deeper parent">
<a href="test.html">Test 2</a>
<ul>
<li class="item-xy"><a href="#">Test 1</a></li>
<li class="item-xy"><a href="#">Test 1</a></li>
<li class="item-xy"><a href="#">Test 1</a></li>
</ul>
</li>
<li class="item-3 deeper parent">
<a href="test.html">Test 3</a>
<ul>
<li class="item-xy"><a href="#">Test 1</a></li>
<li class="item-xy"><a href="#">Test 1</a></li>
<li class="item-xy"><a href="#">Test 1</a></li>
</ul>
</li>
<li class="item-4"><a href="test.html">Test 4</a></li>
<li class="item-5"><a href="test.html">Test 5</a></li>
</ul>
$("li.deeper ul").hide();
$("ul#submenu li.deeper").hover(function(event){
var myClass = $(this).attr("class");
var ulcl = myClass.replace("deeper parent","");
event.stopPropagation();
$("."+ulcl+" ul").slideToggle();
});
$(“li.ul”).hide();
$(“ul#子菜单li.deep”)。悬停(函数(事件){
var myClass=$(this.attr(“类”);
var ulcl=myClass.replace(“较深的父级”,即“”);
event.stopPropagation();
$(“+ulcl+”ul”)。滑动切换();
});
它可以工作,但有时如果你用鼠标靠近li项目,
子项开始冒泡。
你可以在这里看到:
有人能帮我吗
谢谢您的
li
元素显示为块,因此它们占据了整个屏幕的宽度。
通过css减小其宽度,或仅使用以下变体:
$("li.deeper ul").hide();
$("ul#submenu li.deeper > a").hover(function(event){
var myClass = $(this).parent().attr("class");
var ulcl = myClass.replace("deeper parent","");
event.stopPropagation();
$("."+ulcl+" ul").slideToggle();
});
我在选择器中添加了一个
,并将$(this.attr(“class”)
更改为$(this.parent().attr(“class”)
它会冒泡,因为当它开始滑动时,您会得到另一个mouseout事件,这会再次触发切换。所以,添加一些标志
你的构造有点奇怪,为什么不呢
var myClass = $(this).attr("class");
var ulcl = myClass.replace("deeper parent","");
$("."+ulcl+" ul").slideToggle();
不用
if(!isSliding) {
isSliding = true;
$(this).find("ul").slideToggle(function(){isSliding = false;});
}
?
您引用的代码与您在此处发布的代码不同。您确定fiddle属于您的问题吗?