JQuery使用.load()替换整个DIV

时间:2012-01-16 05:55:02

标签: javascript jquery-ui jquery jquery-load

我想在jQuery UI模式对话框结束时刷新<div>

我的代码是:

var dialog = jQuery('#divPopup').dialog({
    autoOpen: false,
    height: 450,
    width: 650,
    modal: true,
    open: function(event, ui) {
        jQuery('body').css('overflow', 'hidden');
    },
    close: function(event, ui) {
        jQuery('#divPopup').dialog('destroy').remove();
        jQuery("#bodyId").load("http://www.xyz.com/ #bodyId");
    }
});

但是,不是替换它,而是在旧<div>内添加新的<div>

<div id="bodyId">
    <div id="bodyId">
        New Response
    </div>
</div>

我想用新的div bodyId替换旧的div bodyId

3 个答案:

答案 0 :(得分:12)

尝试替换它:

jQuery("#bodyId").load("http://www.xyz.com/ #bodyId");

......用这个:

jQuery("#bodyId").load("http://www.xyz.com/ #bodyId > *");

这是有效的,因为您可以在URL后使用任何选择器。使用#bodyId > *代替#bodyId,您可以匹配里面 div的所有内容,而不是div本身。

您需要这样做,因为.load()不会替换元素;它将追加 AJAX调用的结果。

或者,您可以使用.get()加载数据并手动执行选择,如下所示:

$.get('http://www.xyz.com/', function(data) {
    var newContent = $(data).find('#bodyId').children();
    $('#bodyId').empty().append(newContent);
});

这两种方法的例子都在网上:http://jsfiddle.net/PPvG/47qz3/

答案 1 :(得分:0)

您也可以使用jquery.get。

$.get('http://www.xyz.com/', function(data) {
  $('#bodyId').html(data);
});

答案 2 :(得分:-4)

您可能会使用此代码

$('#bodyID').remove();
$('#bodyID').load();