【问题标题】:jQuery selector can't find added elements in DOMjQuery 选择器在 DOM 中找不到添加的元素
【发布时间】:2015-01-14 17:24:17
【问题描述】:

我知道解决方案是jQuery.on-function,但它并没有像我预期的那样工作。

以下问题: 我通过 Websocket(JSON) 数据提取并在文档就绪功能中构建我的页面(出于连接原因)。 这意味着我通过jQuery.append()-函数添加了几个输入字段,并在按下 SET 按钮时尝试访问选择输入。访问选择输入失败。 我选择了 body 作为父元素,其他所有的表单域都应该在里面。

出于演示原因,我删除了 Websocket-Functions。我已经硬编码了表格,因为它是真实的。调试消息显示在 firebug 控制台中。 这是小提琴:http://jsfiddle.net/gLauohjd/

这是我访问选择输入的方式

$("body").on('click', ':button', function () {
    console.log( $( this ).text() ); //Value of the pressed button
    var ip = $(this).attr('ip');
    var selectvalue = "#" + "modeselect" + ip;
    console.log(selectvalue); //Print the selector to verify it is ok
    console.log($(selectvalue).val()); //fails ->not found in DOM

非常感谢任何帮助!

【问题讨论】:

  • 按钮没有text(),所以这是一个空字符串。它也没有ip 属性,所以它是未定义的,这意味着selectvalue#modeselectundefined。没有任何内容与此选择器匹配。
  • 代替 $(selectvalue).val() ,尝试:$('body').find(selectvalue).val()
  • 问题不在于(如我所想).on-函数。正如您在所选答案的 cmets 部分中看到的那样,正确的转义是解决方案。还是谢谢你!

标签: javascript jquery dom selector


【解决方案1】:

要使用 jQuery 选择标签,只需使用标签名称。

$("body").on('click', 'button', function () { .. } // any button clicked on body

至于实际检索值,除非您转义点,否则您将无法这样做。

$("#modeselect127\\.0\\.0\\.1").val();

你可以使用类似的东西:

var selectvalue = "#" + "modeselect" + ip.replace(/\./g, "\\\\.");

希望这会有所帮助。

【讨论】:

  • 对我来说失败了,但这 var selectvalue = "#" + "modeselect" + ip.replace(/\./g,"\\."); 有效 (jsfiddle.net/gLauohjd/2)
  • @Moob:这就是解决方案!非常感谢!我只是对ip中的点视而不见。我并没有想过要正确地逃脱它们。
猜你喜欢
  • 1970-01-01
  • 2017-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-22
  • 2023-04-02
  • 2011-11-23
相关资源
最近更新 更多