我没有从jshint或控制台收到此代码的错误。但是,我的ajax内容没有发布到预期的div。但是,警报会触发:

    var recentVar;
    var highlightsVar;
    var test3;
    var test4;

function switcher(divToShow, thisVar, otherVar, url, div){
    $("#site-nav li a").parents().removeClass("nav-active");
        $(div).addClass("nav-active");
        if (otherVar){ $(otherVar).detach();}

        if(typeof thisVar === 'undefined') {
            thisVar = $(divToShow + " ul.top-level").load("assets/includes/" + url, function () {
                alert("I'm new");
            });
        } else {
            $(thisVar).appendTo("#content-listing");
            alert("I'm old");
        }
}

    //Recent
    $("#site-nav .nav1").on("click", function (event) {
    switcher("#recent", "recentVar", "highlightsVar", "recent.php", "#site-nav .nav1");
    event.preventDefault();
    });

    //Highlights
    $("#site-nav .nav2").on("click", function (event) {
    switcher("#highlights", "highlightsVar", "recentVar", "all-web.php", "#site-nav .nav2");
    event.preventDefault();
    });

最佳答案

它与AJAX无关,但我认为您的问题就在这里。

$(thisVar)
thisVar只是文本。如果进行检查,您会看到$(thisVar).length为0。这是因为您正在调用:$("recentVar"),它将搜索<recentVar></recentVar>类型的任何元素,但显然没有。如果您打算添加该文本,则可以使用append或创建一个元素,然后将文本设置为recentVar并附加它。

编辑:另一个问题:
$(divToShow + "ul.top-level")

您需要在此处放置一个空格:
$(divToShow + " ul.top-level")

否则,您将尝试匹配废话的#recentul.top-level

07-28 05:12