jQuery html()删除元素而不是设置内容

时间:2013-06-03 01:30:08

标签: jquery dom

我正在开发一个小型网站,部分由AJAX提供支持。对于其中的一部分,当用户单击按钮时,内容将加载到元素中。问题是,不是将HTML插入元素,而是完全删除元素(#user .padded)!但是,从控制台(Chrome)运行它可以正常工作。

以下是相关代码:

var attr = $(this).attr('data-id');

if (!$('#user').is(':visible')) {
    $('#user').slideDown(300);
}
var user = $('#user');

$.ajax({
    url: window.baseurl + "/admin/users/" + attr + "/get",
    timeout: 5000,
    cache: false
}).success(function(response) {
    $('#user .padded').html(response);
}).fail(function() {
    $('#user .padded').html('<div class="alert">Unable to load the user, we\'re sorry!</div>');
}).always(function() {
    spinner.stop();
});

是的,我确实意识到它目前效率不高,但我已将其简化为调试。在这种情况下,只调用fail()函数,因为尚未实现服务器端。没有报告Javascript错误,只有404。

我读了一些关于html()清除某些状态的内容,所以我也尝试使用show()而不是slideDown(300)。那里也没有运气。

关于导致这种情况的任何想法? 之前: Before

后:

After

1 个答案:

答案 0 :(得分:0)

我不确定您是如何完全删除padded元素的,请根据您的代码查看下面的测试并假设HTML的结构......

基于以下HTML:

<div id="user">
    User element
    <div class="padded">Padded</div>
</div>

并应用以下jQuery:

$('#user .padded').html('<div class="alert">Unable to load the user, we\'re sorry!</div>');

DOM的操作如下:

<div id="user">
    User element
    <div class="padded"><div class="alert">Unable to load the user, we're sorry!</div></div>
</div>

也许您正在以其他方式删除节点?使用Chrome(或Firebug)dom检查器查看它对HTML的作用。