1

私のajaxは次のようになります:

//get ajax hint count
                        $.ajax({
                            url: "actions.php",
                            type: "GET",
                            data: "get_hint_count=1",
                            cache: false,
                            success: function (data){
                                $(".hint").empty();
                                $(data).appendTo(".hint");
                            }
                        });

データには以下が含まれます。

?<span class="tooltip">Hint is available to registered users only</span>

しかし、この行:

$(data).appendTo(".hint");

の中にあるものだけを追加し.tooltipます。?消える

なんで?

4

2 に答える 2

2

DanC が言うように、$()先頭のテキスト ノードを持つドキュメント フラグメントの作成はサポートされていません。

ただし、append()はこの制限の影響を受けないため、ロジックを反転して次のように記述できます。

success: function(data) {
    $(".hint").empty().append(data);
}

これは、 html()への単一の呼び出しと同等です:

success: function(data) {
    $(".hint").html(data);
}
于 2013-02-28T16:00:21.117 に答える
0

スパン外でその文字を失っている理由は、jQuery ドキュメントに記載されています。

http://api.jquery.com/jQuery/#jQuery2から

HTML を jQuery() に渡す場合、テキスト ノードは DOM 要素として扱われないことにも注意してください。一部のメソッド (.content() など) を除いて、通常は無視されるか削除されます。例えば:

var el = $( "1<br/>2<br/>3" ); // returns [<br>, "2", <br>]
el  = $( "1<br/>2<br/>3 >" ); // returns [<br>, "2", <br>, "3 &gt;"]

この動作は予期されたものです。

受け取ったものをラッピングするようなことを試すことができます。たとえば、次のようになります。

$.ajax({
    url: "actions.php",
    type: "GET",
    data: "get_hint_count=1",
    cache: false,
    success: function (data){
        $(".hint").empty();
        $('<div>' + data + '</div>').appendTo(".hint");
    }
});
于 2013-02-28T15:56:03.333 に答える