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

标签 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');
  });
});

就目前而言,这是有效的,但接下来的一点被证明是棘手的。所以,如果有人想试一试,请做我的客人:)

最佳答案

未经测试,但我认为这可以满足您的需求。

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);
});

关于jquery - 帮助将 javascript 函数移植到 jQuery - 学习工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1537952/

相关文章:

jquery - 在 Lightbox 插件上设置最大宽度 800px

php - JQuery 自动完成传递 ID 但显示值

html - Wordpress 列数排序

html - 如何将 HTML 内容放置在 Flash 影片之上?

ios - 当 block 从 swift 转移到 Objective-C 时出现内存问题

javascript - 尝试使用 PHP 和 Javascript 创建时间表

javascript - 如何在没有 uBlock Origin 标记的情况下发出 Ajax 请求?

javascript - 使用 jQuery 紧接着 ScrollTop 调整高度非常生涩/断断续续

c# - 如何重构我的 LinqToSql 以使其更易于维护?

php - 构建一个长查询并有很多 if 语句 - 有没有更优雅的方法?