0

我正在开发一个小型网站,部分由 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)。那里也没有运气。

关于什么会导致这种情况的任何想法?前: 前

后:

后

4

1 回答 1

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 的作用。

于 2013-06-03T01:47:47.490 回答