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

switcherを実行すると、thisVarは常に文字列になります。typeofが未定義になることはありません。また、(宣言された変数のために)オブジェクトを渡したいように見えますが...前述のように、常に文字列を渡します。

[ジェームズモンターニュのコメントによる]

于 2012-05-31T20:53:53.867 に答える
3

AJAXとは何の関係もありませんが、あなたの問題はここにあると思います。

$(thisVar)

thisVar単なるテキストです。チェックすると、$(thisVar).length0であることがわかります。これは、:を呼び出しているためです。これは$("recentVar")、タイプの要素を検索しますが<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

JQueryのメソッドであるAMAIKはload()、結果を呼び出し元のオブジェクトに直接挿入します。$(divToShow + " ul.top-level")したがって、結果は要素に読み込まれる必要があります。確認しましたか?

于 2012-05-31T20:57:12.807 に答える
0

divToShow + " ul.top-level"現在のドキュメントに.load()メソッドのIDを持つ要素が含まれていない場合、実行されません。

Firebugなどを試してリクエストを追跡してください。たぶんあなたの反応に何か問題があります。

于 2012-05-31T21:01:14.070 に答える