Не удается получить значение динамически созданного элемента .html () в JQuery. - PullRequest
0 голосов
/ 25 февраля 2010

Я создал простой скрипт импорта, который принимает CSV, обрабатывает его в PHP и возвращает таблицу HTML (по сути, список пользователей).

Это вывод HTML:

<tr id="user:1">
  <td id="first:1">Jane</td>
  <td id="last:1">Doe</td>
</tr>

<tr id="user:2">
  <td id="first:2">John</td>
  <td id="last:2">Doe</td>
</tr>

Эти HTML-данные изначально возвращаются как переменная ответа (данные) моей функции загрузки:

$.post('upload.php', {
  first: $('#first').val(),
  last: $('#last').val(),
  function(data) {
    $("#plist", top.document).html(data);
  }
);

Вы заметите, что я затем помещаю данные в div с именем "#plist", который находится в верхнем фрейме. По сути, я делаю то же самое, что и gmail, когда загружает вложения с помощью iframe. Затем я возвращаю данные в div в верхнем фрейме.

Все отлично работает.

Моя единственная проблема - я не могу использовать селекторы JQuery для этих динамически создаваемых данных. Например, если я хотел получить имя первого пользователя, я попытался сделать это:

var first = $("#first:1").html();
alert(first);

Это не работает, как я и ожидал. Ранее я использовал живое связывание JQuery, и оно содержится в этой логике, и оно до сих пор не работает.

$(".some_btn").live("click", function(){
  var first = $("#first:1").html();
  alert(first);
});

Есть идеи?

Ответы [ 2 ]

1 голос
/ 25 февраля 2010

Проблема в том, что : является специальным символом для jQuery. Используется для различных псевдоэлементов (например, $("div:hidden").show()). Вам нужно избежать этого:

$("#first\\:1")...

Я бы предложил использовать другой символ, например _ или -.

0 голосов
/ 25 февраля 2010

Вам все равно придется ссылаться на другой фрейм, чтобы получить элемент, поскольку именно туда вы вставили, например:

$("#first", top.document).html();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...