JQuery заменяет весь DIV, используя .load ()

8

Я хочу обновить <div> в конце модального диалога jQuery UI.

Мой код:

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.

  • 2
    Вы уверены, что ваш серверный скрипт "http://www.xyz.com/#bodyId" не включает <div id="bodyId"> в свои выходные данные?
  • 1
    @techfoobar перед #bodyId . .load() документацией .load() , глава «Загрузка фрагментов страницы».
Показать ещё 1 комментарий
Теги:
jquery-load

3 ответа

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/

  • 0
    Спасибо за ответ
0

Вы также можете использовать jquery.get.

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

вы можете использовать этот код, например

$('#bodyID').remove();
$('#bodyID').load();
  • 2
    Я не думаю, что это сработает. Первая строка удалит div из дерева DOM, что означает, что выбор jQuery во второй строке не будет совпадать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню