jquery事件触发问题
<divclass="mnav"><ul><liclass="mnav1">1</li><divid="hidden"><ul><li>..</li></ul></div...
<div class="mnav">
<ul>
<li class="mnav1">1</li>
<div id="hidden" > <ul >
<li >..</li>
</ul></div>
<li class="mnav1" >2</li>
<div id="hidden" class="dp">
<ul>
</ul>
</div>
<li class="mnav1" >3</li>
<div id="hidden" >
<ul>
<li>...</li>
</ul>
</div>
</ul>
</div>
jquery代码:
$("li.mnav1").mouseover(function(){
$(this).next("div").slideDown("fast");}) //下滑
$("#hidden").mouseout(function(){
$(this).siblings("div").slideUp("fast"); //收起
});
不知道为什么只有第slideDown都是可以的,但是slideUp只有第一个#hidden的mouseout事件是可以的,其他几个都是移动没有反映的。这是为什么? 展开
<ul>
<li class="mnav1">1</li>
<div id="hidden" > <ul >
<li >..</li>
</ul></div>
<li class="mnav1" >2</li>
<div id="hidden" class="dp">
<ul>
</ul>
</div>
<li class="mnav1" >3</li>
<div id="hidden" >
<ul>
<li>...</li>
</ul>
</div>
</ul>
</div>
jquery代码:
$("li.mnav1").mouseover(function(){
$(this).next("div").slideDown("fast");}) //下滑
$("#hidden").mouseout(function(){
$(this).siblings("div").slideUp("fast"); //收起
});
不知道为什么只有第slideDown都是可以的,但是slideUp只有第一个#hidden的mouseout事件是可以的,其他几个都是移动没有反映的。这是为什么? 展开
3个回答
展开全部
你的ul标签用的很奇怪啊,虽然浏览器有一定容错能力,但是有的问题,即使执行了,结果也很奇怪
正确的格式是
<div>
<ul>
<li><ul><li><div></div></li><li></li></ul></li>
<li></li>
</ul>
</div>
你的是
<ul>
<li class="mnav1">1</li>
<div id="hidden" > <ul > <!--最好不要把div直接当做ul的子标签的-->
<li >..</li>
</ul></div>
你的错误关键在于
$("p").siblings(".selected");
siblings,它的作用是p 元素的所有类名为 "selected" 的所有同胞元素
同胞元素,div不会是li的同胞的,用next试试,不然你回到父标签,在find那个子元素
不懂可追问哦
追问
应该这个问题,我之前的代码是这样也不行
$("li.mnav1").mouseover(function(){
$(this).next("div").slideDown("fast");
$(this).mouseout(function(){
$("#hidden").slideUp("fast");
});
});
追答
//改了一下,突然想起,jquery一次定义鼠标放置,离开的事件为hover,如下
$("li.mnav1").hover(function(){
$(this).next("div").slideDown("fast"); },
function(){ $("#hidden").slideUp("fast"); //这就是out了
}
);
// 这个我试过成立的,mouseout在query不能直接用
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询