无法在JQuery中检索动态创建的元素的.html()值

时间:2010-02-24 23:11:56

标签: jquery jquery-selectors

我创建了一个简单的导入脚本,它使用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);
  }
);

您会注意到我然后将数据放入名为“#plist”的div中,该div位于顶部框架中。基本上我在使用iframe上传附件时做了同样的诡计。然后我将数据返回到顶部框架的div中。

一切都很好。

我唯一的问题是我无法在这个动态创建的数据上使用JQuery的选择器。例如,如果我想检索第一个用户名,我试图这样做:

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

这不像我预期的那样有效。我之前使用过JQuery的实时绑定,并且我已将其包含在该逻辑中,但仍然无效。

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

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

问题是:就jQuery而言是一个特殊字符。它用于各种伪元素(例如$("div:hidden").show())。你需要逃脱它:

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

我的建议是使用其他字符,例如_-

答案 1 :(得分:0)

你仍然需要引用另一个框来获取元素,因为你插入的是这个元素,如下所示:

$("#first", top.document).html();