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 回答