Часть извлечения документа HTML в jQuery

Я хочу выполнить вызов Ajax к возвращающей HTML странице, части извлечения HTML (использующий селекторы jQuery), и затем использовать ту часть в моем основанном на jQuery JavaScript.

Извлечение Ajax довольно просто. Это дает мне весь документ HTML в параметре "данных" функции обратного вызова.

То, что я не понимаю, - то, как обработать те данные полезным способом. Я хотел бы перенестись, это в новом jQuery возражает и затем использовать селектор (через находку (), я верю) добираться просто, первая часть хотят. После того как у меня есть это, я буду исчезать, это к другому JavaScript возражает для вставки в мой документ. (Эта делегация - то, почему я не использую jQuery.load () во-первых).

Получение () примеры я вижу, что все, кажутся, быть вариациями на это:

$('.result').html(data);

... который, если я понимаю это правильно, вставляет весь возвращенный документ в выбранный элемент. Мало того, что это подозрительно (не делает этой вставки и т.д.?), но это слишком крупно для того, что я хочу.

Предложения на альтернативных способах сделать это приветствуется.

32
задан Craig Walker 29 January 2010 в 18:01
поделиться

4 ответа

Вы можете использовать свой стандартный синтаксис селектора и пропустить данные как контекст для селектора. Второй параметр, данные в этом случае, является нашим контекстом.

$.post("getstuff.php", function(data){
  var mainDiv = $("#mainDiv", data); // finds <div id='mainDiv'>...</div>
}, "html");

Это эквивалентно выполнению:

$(data).find("#mainDiv");

в зависимости от того, как вы планируете использовать это, $. Load () может быть лучшим маршрутом, поскольку он позволяет как URL, так и Селектор для фильтрации полученных данных, которые передаются непосредственно в элемент, этот метод был вызван:

$("#mylocaldiv").load("getstuff.php #mainDiv");

Это будет загружать содержимое

... В getStuff.php в наш элемент локальной страницы
... .

48
ответ дан 27 November 2019 в 20:39
поделиться

Вы можете использовать нагрузку на новом элементе и пропустите, что на функцию:

function handle(element){
  $(element).appendTo('body');
}

$(function(){
  var div = $('<div/>');
  div.load('/help a', function(){handle(div);});
});

Пример: http://jsbin.com/ubeyu/ 2

4
ответ дан 27 November 2019 в 20:39
поделиться

Вы можете создать DIV , а затем поместите HTML в этом, как это ...

var div = $("<div>").html(data);

... а затем фильтруют такие данные ...

var content = $("#content", div.get(0));

... а затем используйте это.

Это может выглядеть опасно, поскольку вы создаете элемент и вставляете в него произвольный HTML, но это не: что-то опасно (например, скрипт TAG) будет выполняться только тогда, когда он вставлен документ . Здесь мы вставляем данные в элемент, но этот элемент никогда не вводится в документ; Только если мы вставляем содержимое в документ, будет ли что-то вставлено, и даже тогда только что-то в будет вставлено .

5
ответ дан 27 November 2019 в 20:39
поделиться

Вы можете посмотреть на параметр dataFilter() метода $.ajax. Он позволяет выполнить операции с результатами до того, как они будут потеряны.

jQuery.ajax

0
ответ дан 27 November 2019 в 20:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: