我的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
内的内容。 ?
消失了
为什么?
答案 0 :(得分:2)
正如DanC所说,$()
不支持使用前导文本节点创建文档片段。
但是,append()不受此限制的影响,因此您可以反转逻辑并写入:
success: function(data) {
$(".hint").empty().append(data);
}
这相当于对html()的一次调用:
success: function(data) {
$(".hint").html(data);
}
答案 1 :(得分:0)
jQuery docs中记录了你在这个范围之外丢失这个角色的原因:
来自http://api.jquery.com/jQuery/#jQuery2
将HTML传递给jQuery()时,请注意文本节点不会被视为DOM元素。除了一些方法(例如.content())之外,通常会忽略或删除它们。 E.g:
var el = $( "1<br/>2<br/>3" ); // returns [<br>, "2", <br>]
el = $( "1<br/>2<br/>3 >" ); // returns [<br>, "2", <br>, "3 >"]
此行为是预期的。
你可以尝试做一些包装你收到的东西,例如:
$.ajax({
url: "actions.php",
type: "GET",
data: "get_hint_count=1",
cache: false,
success: function (data){
$(".hint").empty();
$('<div>' + data + '</div>').appendTo(".hint");
}
});