【问题标题】:Trying to understand how to simplify Jquery试图了解如何简化 Jquery
【发布时间】:2012-02-24 16:36:32
【问题描述】:

我对 jQuery 非常陌生,我想确保我写的正确。我想开始了解如何尽可能少写。我认为以下内容应该在 .each() 函数中,但我不确定。这就是我将其编码为 if 语句的原因。

HTML

            <div id="header" class="container">
          <div class="row">
            <div class="sixcol"> <a href="#"><img src="http://dermdev3/sites/Dermatology/images/logo/derm_header_penn_logo.png" alt="Penn Medicine - Dermatology Header Logo" name="logo" width="363" height="103" id="logo"></a></div>
            <div class="sixcol last">
              <ul id="navigation">
                <li><a class="navy" href="#" title="Home">Home</a></li>
                <li><a class="red" href="#" title="Link">Link</a></li>
                <li><a class="yellow" href="#" title="Link">Link</a></li>
                <li><a class="light-blue" href="#" title="Link">Link</a></li>
              </ul>
            </div>
          </div>
        </div>

jQuery

$(function () {
//Webpages
var home = "Home.hmtl";
var wiki = "Wiki.html";

//Main Navigation
var header = $("div#header");
var colors = "navy red yellow light-blue";
var nav = $("#navigation");
var navList = $("#navigation li");

if (pathname == wiki) {
    header.addClass("red");
    $("#navigation a.red").attr("id", "current");

    navList.children().mouseenter(function () {
        $("#navigation a.red").removeAttr("id", "current");
    });

    nav.mouseleave(function () {
        header.removeClass(colors).addClass("red");
        $("#navigation a.red").attr("id", "current");
    });
}
if (pathname == home) {
    header.addClass("navy");
    $("#navigation a.navy").attr("id", "current");

    navList.children().mouseenter(function () {
        $("#navigation a.navy").removeAttr("id", "current");
    });

    nav.mouseleave(function () {
        header.removeClass(colors).addClass("navy");
        $("#navigation a.navy").attr("id", "current");
    });
}

});

【问题讨论】:

    标签: jquery class foreach toggle


    【解决方案1】:
    var pages = {
       "Wiki.html": {
          "className": "navy",
       },
       "Home.html": {
          "className": "red"
       }
       // add other pages here.
    };
    
    var header = $("div#header");
    var colors = "navy red yellow light-blue";
    var nav = $("#navigation");
    var navList = $("#navigation li");
    
    function configure(page){
        var anchors = function(){
           return nav.find("a."+page.className);
        }
        header.addClass(page.className);
        anchors().attr("id", "current");
    
        navList.children().mouseenter(function () {
            anchors().removeAttr("id", "current");
        });
    
        nav.mouseleave(function () {
            header.removeClass(colors).addClass(page.className);
            anchors().attr("id", "current");
        });
    }
    

    然后调用它:

    configure(pages[pathname]);
    

    【讨论】:

    • 哇!太感谢了!我该怎么称呼它?记住我还在学习:)
    • 嗯,这取决于。你想在什么时候调用它,在用户做某事之后,或者页面加载的时候?
    猜你喜欢
    • 2021-05-17
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多