3

我没有从 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();
    });
4

5 回答 5

4

在执行切换器时,thisVar 将始终是一个字符串。它永远不会有未定义的类型。它看起来也像你想传入一个对象(由于声明的变量)但是......如前所述,你总是传入一个字符串。

[根据詹姆斯蒙塔涅的评论]

于 2012-05-31T20:53:53.867 回答
3

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

$(thisVar)

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

编辑:另一个问题:

$(divToShow + "ul.top-level")

你需要一个空间:

$(divToShow + " ul.top-level")

否则,您将尝试匹配#recentul.top-level这是胡说八道。


于 2012-05-31T21:08:28.050 回答
0

尝试这个:

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");
    }
于 2012-05-31T20:54:57.600 回答
0

AMAIK,jQuery 的load()方法直接将结果插入到调用对象中。因此结果应该被加载到$(divToShow + " ul.top-level")元素中。你检查过吗?

于 2012-05-31T20:57:12.807 回答
0

如果当前文档不包含具有 ID 的元素,则不执行divToShow + " ul.top-level"该方法。.load()

尝试使用 Firebug 或类似的东西来跟踪请求。也许你的回答有问题。

于 2012-05-31T21:01:14.070 回答