不同元素类型的name属性的jQuery选择器

3

我有一个包含多行的表格。其中一列中,有些行包含静态文本的span元素,有些行则包含可供选择的值的select元素。该列中的所有元素都具有相同的name属性。在提交表单时,我需要遍历每一行并获取所有列的值。我希望只用一个jQuery选择器语句从该元素(name属性为“materialValue”的span或select)获取值。请问如何使用jQuery实现?以下是html片段。

<table>
  <tr><td>
      <span id="materialValue1" name="materialValue>ONE</span>
  </td></tr>
  <tr><td>
      <span id="materialValue2" name="materialValue>TWO</span>
  </td></tr>
  <tr><td>
      <select id="materialValue3" name="materialValue>
        <option>ONE</option>
        <option>TWO</option>
        <option>THREE</option>
      </select>
  </td></tr>
  <tr><td>
      <select id="materialValue4" name="materialValue>
        <option>ONE</option>
        <option>TWO</option>
        <option>THREE</option>
      </select>
  </td></tr>
</table>

编辑:我通常会先指定元素类型,然后使用方括号指定属性名称/值。 我不确定如何在没有元素类型名称的情况下指定jquery选择器。 例如$('span[name="materialValue"]', this)。 指定$('[name="materialValue"]', this)是否合法? 看起来很奇怪。


基于 name=materialValue 创建选择器 - ayyp
正如Andrew所说 - Frédéric Hamidi
使用相同的 name 属性是无效的标记。请使用 name = whatever[] - xkeshav
@diEcho,为什么在多个元素上使用相同的“name”会无效?这正是复选框和单选按钮的工作原理。 - Frédéric Hamidi
有不同的元素 span div select 具有相同的名称。'checkbox' 'radio' 有不同的属性。 - xkeshav
@diEcho,我明白,但这只意味着在服务器端代码中相同名称将有多个可用值。使用[]后缀是PHP的习惯用法,允许在数组中访问这些值。其他语言没有任何问题,可以让您在不调整“name”属性的情况下执行此操作。 - Frédéric Hamidi
2个回答

7

2
回答问题:编辑一下,看起来有点奇怪,但实际上完全没问题。事实上,它就像你在日常代码中已经使用 #id.class 一样,没有类型或 * 选择器。 - BoltClock
谢谢澄清,我只是不确定它如何与属性选择器配合使用。每天都会学到新东西... - Austin

4

Like this...

$("[name=materialValue]")    // Select element with name attribute with a specific value

属性可以使用方括号进行选择。在其他情况下,您也可以像这样使用它...

$("div[id]")      // Select element with an id attribute

$("[name*=test]") // Select all elements with *test* in the name attribute (partial)

etc..


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接