2013-02-25 67 views
1

我的页面渲染的评论是这样的:jQuery部分选择器如何工作?

<div class="ReadComment comment#1"> 
    First comment 
    <br> 
    <span>posted by vi vi on 2/25/2013</span> 
    <p>My first comment</p> 
</div> 

当我历数我的“评论#”类注释序列顺序。

我试图用jQuery选择选择哪个班开始 '评论#' 的所有元素:

VAR评论= $( “DIV [^类= '注释#']”);

但它不这样工作。 相反

var comments = $("div[class*='comment#']"); 

工作完全正常。

我认为jquery会逐个检查每个元素的类。所以如果我写[class^='comment#']它会先检查ReadComment班,然后再检查comment#班。

但它似乎只检查类的行。 是这样吗? 有人可以解释它是如何工作的?我找不到解释) 谢谢)

回答

4

这些是属性选择器。在你的情况下,你检查class属性是从字符串comment#开始的,它不会(我不认为#是类名的有效字符)。

*=的工作原理是因为它检查comment#是否属于属性的值,它是。

如果您想进行更高级的过滤,您必须使用.filter()并自己编写一个函数。

+0

谢谢你这样详细的答案)不是我明白我的错误) – makambi 2013-02-25 09:01:00

+0

这里是显示此来源:https://github.com/jquery/sizzle/blob/master/sizzle.js#L1027 – 2013-02-25 09:01:01

2

在jQuery #中为DOM id选择保留。

comment#此代码所做的是查找评论标记whh id

这是不正确的,$("div[class*='comment#']")这个选择的DOM与类包含comment#意思是找到类包含comment#结束或beginnig或任何地方在类名称。

+0

谢谢,现在很清楚) – makambi 2013-02-25 09:01:47