帮助将javascript函数移植到jQuery - 学习工具

时间:2009-10-08 13:54:37

标签: jquery css refactoring porting

我正在学习jQuery,我想看看我能用下面的函数做些什么。此函数添加或删除css类以创建下拉菜单(实际上是Stu Nicholl的众所周知的下拉菜单)。但是我没有走得太远(我现在一直在学习jQuery,所以我的DOM遍历还不是很好)。我很想知道使用jQuery会变得多么优雅和优雅,我想我会看到你们能想出的东西。这是现有的功能:

 var getEls = document.getElementById("menu").getElementsByTagName("LI");
 var getAgn = getEls;
 for (var i=0; i<getEls.length; i++) {
 getEls[i].onclick=function() {
 for (var x=0; x<getAgn.length; x++) {
 getAgn[x].className=getAgn[x].className.replace("unclick", "");
 getAgn[x].className=getAgn[x].className.replace("click", "unclick");
 }
 if ((this.className.indexOf('unclick'))!=-1) {
 this.className=this.className.replace("unclick", "");;
 }
 else {
 this.className+=" click";
 }
 }
 }
 }

我的第一次失败是这样开始的:

$(document).ready(function() {
  $('#menu > li').click(function() {
     $('#menu >li > ul').toggleClass('unclick');
  });
});

尽管它可行,但下一位被证明是棘手的。所以,如果有人想要去,请成为我的客人:)

1 个答案:

答案 0 :(得分:0)

未经测试,但我认为这可以做你想要的。

jQuery(function () {
    var menus = jQuery('#menu li');
    var open_menu = function open_menu() {
        var menu_to_open = jQuery(this);
        if (menu_to_open.hasClass('open')) {
            menu_to_open.removeClass('open');
        } else {
            menus.removeClass('open');
            menu_to_open.addClass('open');
        }
    };
    menus.click(open_menu);
});