【问题标题】:Selecting and changing an appended HTML input tag in Jquery在 Jquery 中选择和更改附加的 HTML 输入标记
【发布时间】:2014-08-14 20:40:29
【问题描述】:

我有一个无法通过研究/Google 解决的问题。我成功地将以下输入框附加到我的 HTML/JQuery 项目中。它们都按预期显示在网页上。

for (i = 0; i < max; i++) {
  var id = myUniqueIDs[i];
  $("#targetedDiv").append(myUniqueIDs[i] + ': <input id = "' + id + '" type = "text" class = "findOutputs" readonly/>');
}

稍后在我的代码中,经过一些用户交互后,我尝试将一些信息写入输入框中。用户不能写入它们(它们是只读的)。我知道我可以通过 Jquery 写入只读输入框,因为它是在我项目的其他地方完成的。但是它只是不起作用。

for (i = 0; i < max; i++) {
  var y = getY(); // the returned variable is confirmed correct via debugging
  var id = myUniqueIDs[i]; // again, confirmed correct
  $('#' + id).val(y); // does not work
}

当我在我的代码中输入var test = $("#targetedDiv").html(); 时,我可以看到测试是

uniqueID1: <input id="uniqueID1" class="findOutputs" readonly="" type="text">
uniqueID2: <input id="uniqueID2" class="findOutputs" readonly="" type="text">
uniqueID3: <input id="uniqueID3" class="findOutputs" readonly="" type="text">

所以老实说,我不知道问题是什么。 $('#' + id).val(y); 有什么不合法的地方吗?

你不能在 Jquery 中选择附加标签吗?有人可以指出我在这里缺少什么吗?

问题肯定出在选择上,因为我在更改值的部分之后尝试了var test = $("#targetedDiv").html();,并且变量测试与在第二个循环之前完成时没有区别,所以$('#' + id).val(y);(或其他答案中的建议)无效。

【问题讨论】:

  • 像你这样连接 ID 完全合法 - 你能在小提琴中重现这种行为吗?
  • 一旦元素在 DOM 中,您可以像静态创建的元素一样选择它。
  • 我可以尝试在小提琴中重新创建它,但我将无法在几个小时内做到这一点。我也(诚然)不是最好的程序员(我已经编程不到一年),而且我以前从未使用过小提琴,所以我不知道它会有多好;)。我感谢那些阅读了这个问题的人。
  • 我猜getY() 函数有问题。我用一个值而不是函数尝试了代码,它可以工作。看这里:jsbin.com/pacevudigami/1/edit
  • 如果 id 包含特殊字符,您必须对其进行转义。

标签: javascript jquery html jquery-selectors append


【解决方案1】:

Musa 在 cmets 中回答了这个问题。 “如果 id 包含特殊字符,您将不得不转义它们。” 我的(真实)ID 包含一个空格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 2012-10-02
    • 1970-01-01
    • 2020-04-01
    相关资源
    最近更新 更多