Доступ к элементам, которые были добавлены в DOM через файл, загруженный с помощью .load () - PullRequest
1 голос
/ 19 июня 2011

Я использую jQuery .load () для загрузки php-файла. Этот php-файл выводит новый div. Этот div содержит атрибут «title», значение которого мне нужно получить в моем js-файле.

// file.php
echo '<div id="max_page" title="' . $max_page . '"></div>';

// js
$("someElement").load("file.php");
var num = $("div#max_page").attr("title");

В результате num = "undefined". Я предполагаю, что причина этого в том, что div # max_page добавляется в DOM после того, как был выполнен начальный $ (document) .ready, и, следовательно, jQuery просто не знает о его существовании. Это правильно?

Как решить проблему? (Я попытался поэкспериментировать с .live (), но не смог заставить его работать на меня)

Ответы [ 3 ]

1 голос
/ 19 июня 2011

Когда вы проверяете num, он еще не был добавлен в DOM, поскольку ajax еще не завершил загрузку страницы в DOM.Сделайте это в complete обратном вызове load:

$("someElement").load("file.php",function(){
var num = $("div#max_page").attr("title");
});
0 голосов
/ 19 июня 2011

файл не загружен при установке num.использовать обратный вызов.

$("someElement").load("file.php", function () {
   var num = $("div#max_page").attr("title");
});
0 голосов
/ 19 июня 2011

Вы правы, полагая, что ваше время неверно:)

// js
$("someElement").load("file.php", function(){
    var num = $("div#max_page").attr("title");
    // here you can do with num whatever you need
});

Функция, переданная в качестве второго аргумента, будет выполнена сразу после загрузки file.php в someElement, что гарантируетатрибут title будет существовать на этом этапе.

...