我正在开发一个小型网站,部分由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)。那里也没有运气。
关于导致这种情况的任何想法? 之前:
后:
答案 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的作用。