загруженный div еще не в DOM - PullRequest
       28

загруженный div еще не в DOM

1 голос
/ 27 января 2011

Я использую функцию jQuery load () для загрузки некоторого содержимого из одного div в другой. Он хорошо отображается в браузере, но когда я пытаюсь использовать функцию find (), он ничего не находит, так как пока не отображается в DOM. Я попытался распечатать HTML-содержимое div (тот, который содержит загруженный контент) сразу после их загрузки и непосредственно перед использованием find () - он показывает HTML, который был там до div с содержимое было загружено в.

Итак, вопрос в том, как мне найти определенный идентификатор в загруженном контенте, если его еще нет в DOM?

Может быть, я мог бы обойти это с помощью live () и пользовательских событий?

Вот очень упрощенный код того, что происходит:

$('#serverctl-server-dc').load('query.php?m=serverctl&q=shelf_view');
console.log($('#srv-1111').html());

Сгенерированный источник содержит элемент # srv-1111 и содержит html. Я не получаю ничего в консоли, хотя.

Ответы [ 4 ]

3 голосов
/ 27 января 2011

«нагрузка» асинхронная.Вы должны поместить обработку в параметр функции обратного вызова запроса загрузки.Только тогда вы можете быть уверены в доступности внутренних элементов DIV.

Да, вы можете использовать «live ()», если хотите обрабатывать события для новых элементов.Если вы просто хотите манипулировать новыми элементами (кроме стилизации их с помощью CSS), например, заменить часть текста чем-то другим или анимировать их, вам нужно будет дождаться загрузки их.

0 голосов
/ 27 января 2011

Мне нужно было манипулировать элементом $ ('# srv -' + maskId), поэтому то, что я реализовал, было волшебным - по крайней мере, для меня:

$('#serverctl-server-dc').live('getId', function(){
    $('#srv-'+maskId).parent().css('border','4px solid #AF0200');
});

$('#serverctl-server-dc').load('query.php?m=serverctl&q=shelf_view', function(){
    $('#serverctl-server-dc').trigger('getId');
});
0 голосов
/ 27 января 2011

Вы можете использовать firebug и отладить скрипт.После загрузки содержимого найдите идентификатор, чтобы увидеть, действительно ли он там есть.

HTH

0 голосов
/ 27 января 2011

В принципе, он должен найти ваш элемент, но вам нужно проверить последовательность ваших действий.

Когда именно вы используете функцию поиска?

Используйте инструменты разработчика Chrome, поскольку он показывает текущий манипулированный HTML, а не исходный файл, который был загружен.

Если вам нужно больше объяснений, напишите свой код. Удачи!
...