Заменить контент на jQuery.fn.load - PullRequest
0 голосов
/ 29 сентября 2011

Я пытаюсь написать клиентский скрипт для нестандартного использования .load.Я работаю с другим сайтом, и у меня нет доступа для изменения их сгенерированного кода, поэтому я должен делать все на стороне клиента.

Страница выглядит примерно так:

<html>
  <!-- the head -->
  <body>
    <div id="body">
      <!-- the content -->
    </div>
  </body>
</html>

Теперь я хочу обновить страницу с помощью XHR.Я хочу заменить содержимое #body новым содержимым #body из XHR.Мой первый инстинкт был сделать это:

$('#body').load('/ #body')

Но это дает мне DOM, который выглядит так:

<html>
  <!-- the head -->
  <body>
    <div id="body">
      <div id="body">
        <!-- the content -->
      </div>
    </div>
  </body>
</html>

Это явно не то, что я хочу.Я хочу, чтобы <!-- the content --> из недавно извлеченной копии просто перезаписывал <!-- the content --> из текущей копии.

Я также пробовал что-то вроде

$.get('/', function(data) {
  $('#body').html($(data).find('#body').html());
}

безрезультатно.Когда я играю с ним, я обнаруживаю, что $(data).find('#body') никогда ничего не находит.

1 Ответ

1 голос
/ 29 сентября 2011

Вы можете обернуть результат вашего XHR, предполагая, что это html в объекте jquery, захватить тело вызывающей страницы и использовать replaceWith.

//snip
var xhrResult = $("<html><div id='body'>blah</div></html>"), // pretend this was returned
    newContent = xhrResult.filter("#body"),
    placeHere = $("#body");
placeHere.replaceWith(newContent);

Отредактировано на основе этой скрипки: http://jsfiddle.net/bstakes/VmhBW/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...