首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery选择器:选择器的顺序重要吗?

jQuery选择器:选择器的顺序重要吗?
EN

Stack Overflow用户
提问于 2013-05-29 09:44:53
回答 3查看 162关注 0票数 1

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

代码语言:javascript
运行
复制
<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>

现在,如果我想选择所有的文本区域,我将执行以下操作,这是一种自然语言:give me all elements which are textareas, with the following ids

代码语言:javascript
运行
复制
$("textarea [id^=panel_comments_]")

但它给了我一个空洞的结果。相反,我必须像这样重新排列选择器,这是在自然语言give me all elements with the ids, and which are textareas

代码语言:javascript
运行
复制
$("[id^=panel_comments_] textarea")

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-29 09:46:24

这里的空间很重要,就是后代选择器。只需略去:

代码语言:javascript
运行
复制
textarea[id^=panel_comments_]

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

CSS选择器工作在层次结构上,比如HTML,所以“子选择器”的顺序很重要,这是合理的。

只有当您不想表达元素之间的关系时,命令几乎不重要

一个简单的选择器要么是类型选择器,要么是通用选择器,然后依次是零或多个属性选择器、ID选择器或伪类。

票数 3
EN

Stack Overflow用户

发布于 2013-05-29 09:46:04

你想要这个,没有额外空间:

代码语言:javascript
运行
复制
$("textarea[id^=panel_comments_]")

使用空格as:$("textarea [id^=panel_comments_]")意味着选择textarea中具有ID的所有元素。

使用:$("[id^=panel_comments_] textarea")意味着选择ID以选择器字符串开头的元素中的所有textarea。

在BoltClock的注释之后,必须在任何额外的筛选器之前使用类型选择器,这意味着:

  • $("textarea[id^=panel_comments_]")有效
  • $("[id^=panel_comments_]textarea")无效
票数 3
EN

Stack Overflow用户

发布于 2013-05-29 09:46:30

代码语言:javascript
运行
复制
$("textarea[id^=panel_comments_]")

去掉多余的空间

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16810584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档