jQuery 选择器 : is the order of selectors important?

标签 jquery jquery-selectors

我有一个 html 文档,如下所示:

<div id="panel_comments">
  <table id="panel_comments_table">
    <tr>
      <td style="width: 150px;">Monday: </td>
      <td><textarea id="panel_comments_monday" rows="4" cols="60" >Monday comment area</textarea></td>
    </tr>
    .. same with the other 6 weekdays
  </table>
</div>

现在,如果我想选择所有文本区域,我会执行以下操作(使用自然语言):给我所有文本区域元素,并具有以下 id:

$("textarea [id^=panel_comments_]")

但它给了我一个空结果。相反,我必须像这样重新排列选择器,这是一种自然语言 给我所有带有 id 的元素,它们是文本区域:

$("[id^=panel_comments_] textarea")

为什么选择器的顺序很重要?

最佳答案

这里的空格很重要,它是 descendant selector 。省略它即可:

textarea[id^=panel_comments_]
<小时/>

[id^=panel_comments_] textarea 似乎起作用的原因是它选择 ID 为 panel_comments 的 div 元素 然后找到它的后代的所有文本区域。因此,这只是“偶然”起作用,因为 divtextarea 具有相似的 ID。如果您给 div 元素一个完全不同的 ID,它就不会起作用。

<小时/>

CSS 选择器适用于分层结构,例如 HTML,因此“子选择器”的顺序很重要是合理的。

仅当您不想表达元素之间的关系时,the order almost doesn't matter :

A simple selector is either a type selector or universal selector followed immediately by zero or more attribute selectors, ID selectors, or pseudo-classes, in any order.

关于jQuery 选择器 : is the order of selectors important?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16810584/

相关文章:

jQuery:边框的高度()

jquery - 在 meteor 点击处理程序中使用正则表达式

javascript - 获取所有 data = value 的元素

javascript - jquery 验证除一个 div 之外的表单

javascript - 如何选择从一个点给定半径内的所有元素?

javascript - 动态内容滚动条错误

jquery - 获取原始选项的类以选择 2 下拉列表

Javascript 检查是否单击了鼠标左键

jquery-selectors - 如何使用 Cheerio 访问包含不同属性值的 DOM 属性?

Click 上的 Jquery 动态选择器