【问题标题】:Jquery get element by id, multidimensional arrayJquery通过id,多维数组获取元素
【发布时间】:2016-05-09 01:51:10
【问题描述】:

我正在尝试获取特定 html 输入的值,其名称如下:

<input type="hidden" value="." id="grid[0][0]">

其中 [0][0] 可以是 foreach 循环中的任何值。

使用 Jquery:

var currVal = $('#grid['+x+']['+y+']').html();

我得到一个未定义的值。不确定是否是语法问题。我还没有找到类似的例子,所以我很感激任何帮助。谢谢!

【问题讨论】:

  • 我...没有解决这个特定问题的方法。我会说,在 99% 的情况下,如果您的 id 中有一个数字,那么您做错了。

标签: javascript jquery html multidimensional-array


【解决方案1】:

这实际上是一个语法问题。 jQuery 将“#grid[...]”解释为 ID 为“grid”和一些属性(或其他元数据)的 HTML 元素就像 CSS 一样

要解决,只需转义[],如下所示:

$('#grid\\[' + x + '\\]\\[' + y + '\\]').val()

应该这样做:)

编辑:正如 Josh Crozier 所指出的,html() 方法应该用于普通标签(如 div)。对于inputselecttextarea,您应该使用val() -- 相关文档:http://api.jquery.com/val/

【讨论】:

  • 是的,那行得通。但同样值得指出的是bracket characters are invalid in an ID attribute...此外,OP 正在使用.html() 方法...它应该是.val(),因为input 元素不能包含HTML..
  • 是的,你还记得那件事!谢谢!完全忘记了 html()/val() 的事情(自从我自己使用 jQuery 以来已经很久了)。奇怪的是这些 ID 确实有效(尽管不推荐)
  • 非常感谢,也不知道括号,将从 html ID 中删除:D
  • @JoshCrozier 不再使用 HTML5 id 可能包含特殊字符...mathiasbynens.be/notes/html5-id-class
【解决方案2】:

你也可以这样做:

var currVal = $('input[id="grid['+x+']['+y+']"]').val();

【讨论】:

    猜你喜欢
    • 2014-03-03
    • 2011-07-17
    • 1970-01-01
    • 2011-02-23
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    相关资源
    最近更新 更多