【问题标题】:Can't retrieve dynamically created element's .html() value in JQuery无法在 JQuery 中检索动态创建的元素的 .html() 值
【发布时间】:2010-02-25 12:05:51
【问题描述】:

我创建了一个简单的导入脚本,它采用 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 上传附件时,我正在做与 gmail 相同的诡计。然后我将数据返回到顶部框架的 div 中。

一切都很好。

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

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

这不符合我的预期。我以前使用过 JQuery 的实时绑定,我将它包含在该逻辑中,但它仍然不起作用。

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

有什么想法吗?

【问题讨论】:

  • 冒号通常在选择器中具有特殊含义。尝试使用不带冒号的 id 名称。
  • 如果有问题回答了您的问题,我们强烈建议您接受答案和/或为答案投票。

标签: jquery jquery-selectors


【解决方案1】:

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

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

我的建议是使用不同的字符,例如 _-

【讨论】:

    【解决方案2】:

    您仍然必须引用另一个框架来获取元素,因为那是您插入的位置,如下所示:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-14
      • 1970-01-01
      • 2017-08-02
      • 1970-01-01
      • 1970-01-01
      • 2015-11-05
      • 2017-08-04
      • 1970-01-01
      相关资源
      最近更新 更多