【问题标题】:How do I reference an element by name with [] brackets in it? [duplicate]如何按名称引用带有 [] 括号的元素? [复制]
【发布时间】:2011-06-04 06:08:12
【问题描述】:

如何在 jquery BY NAME 中引用包含 [] 的元素。

<select name="values[]" multiple="true">
<option value="1">1</option>
<option value="2">2</option>
<option value="2">2</option>
</select>

<script type="text/javascript">
$('[name=values[]]'); 
</script>

这应该抓住元素,但它不起作用,我相信名称中的 [] 把它搞砸了,转义它似乎也不起作用。我不知道我做错了什么

【问题讨论】:

  • HTML 不正确。 multiple 属性可以取的唯一值是multipletrue 是一个错误。
  • 问题可在 Firefox 3.6.17+ 中重现。有关错误请参考bugs.jquery.com/ticket/5482

标签: javascript jquery


【解决方案1】:

一种方法是在选择器中引用名称:

$('[name="values[]"]')

或者:

$("[name='values[]']")

【讨论】:

    【解决方案2】:

    相关:How do I get jQuery to select elements with a . (period) in their ID?

    回答: 使用双反斜杠转义括号。

    $('[name="values[]"]');

    编辑:为了有效性而修改了示例。显然,Sizzle 没有很好地处理未引用的版本。

    【讨论】:

      【解决方案3】:

      它似乎在 Chrome 中对我有用。

      如果您运行此代码并查看控制台,您应该会看到元素

      <select name="values[]" multiple="true">
          <option value="1">1</option>
          <option value="2">2</option>
          <option value="2">2</option>
      </select>
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
      <script type="text/javascript">
      
          // all the inputs with the name value
          console.log($('[name=values[]]'));
      
          // The first input with the name value
          console.log($('[name=values[]]')[0]);
      </script>
      

      【讨论】:

        猜你喜欢
        • 2011-04-23
        • 2016-02-10
        • 2014-11-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-20
        • 2017-03-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多