jQuery使我发疯.我在网上四处寻找一个简单的类别扩展器滑块,但没有找到.香港专业教育学院试图在这里创建一个.
我遇到的问题是尝试隐藏()以前是show()n的元素时.如果在调用hide()之前将另一个元素show()n,则第一个元素对hide()的调用将被忽略!
原谅我发布了完整的HTML(请随意建议以后我应该在哪里托管整个代码示例).
如果有人对jQuery插件或我想做的其他实现有任何建议,请指出这一方向-我很乐意使用已经制造的东西.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.min.js"></script>
<script type="text/javascript">
$().ready(function() {
$("ul.Box_li li.parent").mouseenter(function(event){
event.stopPropagation();
$(this).children("ul:first").show('slide',{direction: 'left'});
}).mouseleave(function(event){
event.stopPropagation();
$(this).children("ul:first").hide('slide',{direction: 'left'});
});
});
</script>
<style type="text/css">
body {font-size:10pt;}
ul.Box_li li.parent {position:relative;}
ul.Box_li li {background-color:#e6e6e6;width:200px;border:1px solid red;list-style-type:none;padding:5px;}
ul.Box_li>li ul {display: none;position: absolute;top: 0;left: 100%;}
</style>
</head>
<body>
<ul class="Box_li">
<li class="parent">
FIRST
<ul>
<li class="parent">
FIRST_SUB_1
<ul>
<li>FIRST_SUB_1_SUB_1</li>
<li>FIRST_SUB_1_SUB_2</li>
<li>FIRST_SUB_1_SUB_3</li>
<li>FIRST_SUB_1_SUB_4</li>
</ul>
</li>
<li>FIRST_SUB_2</li>
</ul>
</li>
<li class="parent">
SECOND
<ul>
<li>SECOND_SUB_1</li>
<li>SECOND_SUB_2</li>
<li>SECOND_SUB_3</li>
<li>SECOND_SUB_4</li>
<li>SECOND_SUB_5</li>
<li>SECOND_SUB_6</li>
<li>SECOND_SUB_7</li>
<li>SECOND_SUB_8</li>
</ul>
</li>
<li class="parent">
THIRD
</li>
<li class="parent">
FOURTH
<ul>
<li>FOURTH_SUB_1</li>
<li>FOURTH_SUB_2</li>
<li>FOURTH_SUB_3</li>
<li>FOURTH_SUB_4</li>
<li>FOURTH_SUB_5</li>
<li>FOURTH_SUB_6</li>
<li>FOURTH_SUB_7</li>
<li>FOURTH_SUB_8</li>
</ul>
</li>
<li class="parent">
FIFTH
<ul>
<li>FIFTH_SUB_1</li>
<li>FIFTH_SUB_2</li>
<li>FIFTH_SUB_3</li>
<li>FIFTH_SUB_4</li>
<li>FIFTH_SUB_5</li>
<li>FIFTH_SUB_6</li>
</ul>
</li>
</ul>
</body>
</html>
最佳答案
您在这里可以做的最好的事情就是获得类似的效果,如下所示:
原文链接:/jquery/531072.html$("ul.Box_li li.parent").hover(function(){
$(this).children("ul:first").animate({ width: 'toggle'});
});
You can view a demo here,这是因为jQuery UI效果如何处理自身,导致它们没有真正正确地遵循队列规则,请看the source for the slide
effect:
el.animate(animation,{ queue: false,....
这些效果是有意地超出了正常的fx动画队列的范围,尽管我不确定是谁做出的决定,应该反过来……但这是导致当前问题的原因.我猜他们明确地打算用于不可中断的操作,例如对话框消失,标签更改等…基本上不会调用.stop()
的东西.