У меня есть вызов ajax, и я пытаюсь проанализировать возвращенную страницу для #viewport, тем самым удаляя верхний и нижний колонтитулы возвращенной страницы. но find() не может найти div.jquery не может найти div по id
моя оригинальная функция:
function(event) {
$.ajax({
type: this.method,
url: this.action,
data: $(this).serialize(),
datatype: "html",
success: function(data) {
alert(data);
var respHTML = $(data).find("#viewport");
alert(respHTML.length);
$("#contacts_sidebar").html(respHTML);
}
});
return false;
}
в оповещении (данные), я определенно вижу <div id="viewport">
, но alert(respHTML.length)
отображается 0. Если я изменить селектор «table.someclass», было бы найти его. но селекторы, такие как «голова» и «тело», также возвращают 0.
я знаю, что это, безусловно, есть б/с я заменить обработчик успеха со следующим обходным:
success: function(data) {
var respHTML;
var d=$(data);
for (i=0; i<d.length; i++) {
if (d[i]["id"] === "viewport") {
respHTML = d[i]["innerHTML"];
break;
}
}
$("#contacts_sidebar").html(respHTML);
}
я упускаю что-то? обходной путь работает, просто уродливый.
спасибо большое!
Вы не совершали бы грех использования того же значения «id» для нескольких элементов, не так ли? – Pointy
Вы уже добавляли элемент в DOM, прежде чем искать идентификатор? или это просто HTML? –
@Caspar Kleijne, он неявно добавляет возвращенный HTML в фрагмент документа, записывая '$ (данные)' – Pointy