1

我在教我自己的 javascript 和 jquery,所以这可能是一个低俗的问题,或者对于任何人来说代码都太多了,但我希望得到一些反馈。我环顾四周,并没有找到一个看起来可以很好地解决我的问题的线程。

我正在使用 cms indexhibit(无法创建新标签!)并尝试从它生成的菜单列表中创建手风琴式菜单。我基本上有我之后的行为,修改了现有的工作,但有很多缺点,这无疑是 .click 和 .toggle 之间的冲突以及混淆的使用 if 语句。

我基本上想从头开始并重做,这样我就可以 a) 从错误中吸取教训 b) 了解正在发生的事情。我现在遇到了麻烦,因为我不知道从这里去哪里,或者如何解决它。

谁能给我一个快速分析文档头部的脚本如何协同工作?还有任何洞察我看到的冲突的性质以及可以采取什么方法来解决它们?如果你要重新开始,你的方法是什么?

这是一个测试以查看它的实际效果(疣和所有):http ://stillstatic.nfshost.com/


此脚本进入文档头:

<script type='text/javascript'> //im not entirely clear as to what this achieves
path = 'path/to/script/';
$(document).ready(function() { 
setTimeout('move_up()', 1); 
expandingMenu(0); 
expandingMenu(1);
expandingMenu(2);
expandingMenu(3);
expandingMenu(4);
//etc
});
</script>

生成的列表:

 <ul> 
 <li class='section-title active_menu'>blogs</li> 
 <li><a class="active" href='#' onclick="do_click();">3</a></li> 
 </ul> 

 <ul> //this menu section dose not have a label: class .section-title
 <li><a href='#' onclick="do_click();">1</a></li>
 <li><a href='#' onclick="do_click();">2</a></li> 
 </ul> 

 <ul> //this menu section is not the 'active menu' this is achieved by the jquery script
 <li class='section-title'>writing</li> 
 <li><a href='#' onclick="do_click();">4</a></li> 
 <li><a href='#' onclick="do_click();">5</a></li> 
 </ul> 

外部脚本中的内容:

function expandingMenu(num) {
var speed = 500;
var menu_title = $("#menu ul").eq(num).children(":first"); // ie. first child be the         title with the class .section-title unless the user turned it off 
var menu_items = $("#menu ul").eq(num).children().filter(function (index) { return index > 0; }); // ie. any li NOT in position 0, below li.section-title

if (menu_items.is(".active") == true) {
menu_title.addClass("active_menu"); //Add a class to the active list so we can style it.
}   
if (menu_title.is(".section-title") == true){ // this if prevents interference with users who turn off the section titling

if ((menu_items.is(".active") == false) && (menu_items.is(":visible"))  )  {
 menu_items.hide(0);// first we hide the inactive exhibits
 } 

$('li').click(function (){
if ( (menu_title.is(":visible") == true)  ){
menu_items.hide(speed);
  }
if ( (menu_items.is(":hidden") == true ) && (('')) ){// ?! without this EMPTY second condition things break down??? hu?. . .
menu_items.show(speed);
}
})   

menu_title.css({cursor:"pointer"}).toggle( // add click functions + pointer to     menu_title
function () {
menu_items.show(speed);//Open it up
}, 
function () {
// this function could even be empty but without a pointless 'if' things get really weird
if (menu_items.is(".xx")) 
menu_items.hide(speed); //Take the menu item off of active duty!
}
)
 }  
}
4

1 回答 1

1

你是对的 - 有很多代码需要遍历(并且当前格式错误)..你的示例似乎可以运行 - 它到底有什么问题?

至于头部中的代码 - move_up() 未在您的代码中定义(setTimeout)

expandMenu(0) - 理论上扩展第一个 li。这应该在文档中准备好,并且可能更优雅一点:

$("#menu ul li").click();

jqueryui.com有一个很棒的手风琴插件

于 2010-06-09T18:09:49.943 回答