使用gwtquery,我们如何选择具有包含多个单词的值的属性的元素?

时间:2012-05-23 18:33:36

标签: gwt css-selectors gwtquery

我想要选择一个元素,例如

<div class="my class">InnerHTML</div>

虽然可以使用带有[class="my class"]的CSS选择器轻松完成此操作,但gwtquery在输入中不带引号的意义上有所不同。它只接受[attribute=attributevalue]等值。

当我在GQuery中应用相同的选择器时,中间有空格,它没有返回任何匹配项。我有一种感觉,这可能是因为在这种情况下库中的一些不正确的解析。是这样吗?

如果是这样,我还有其他方法可以使用GQuery选择这些元素吗?

2 个答案:

答案 0 :(得分:2)

它适用于我(至少使用gwtquery-1.1.0和gwt 2.4.0)

GQuery myClassDivs = $("div[class=\"my class\"]");

返回<div class="my class"/>的匹配项。


但是,使用class属性时,通常最好使用~=选择器,因为<div class="my class"/><div class="class my"/>通常应被视为等效。

所以我建议使用

GQuery myClassDivs = $("div[class~=my][class~=class]");

这也会选择<div class="my class special"/>之类的东西,这通常是可取的。

答案 1 :(得分:1)

通常,要选择具有空格分隔字词的属性,您可以将[att~=val]选择器用作mentioned by Chris Lercher

或者,你知道,既然你正在选择class属性,你可以改用类选择器:

GQuery myClassDivs = $("div.my.class");

关于这个:

  

当我在GQuery中应用相同的选择器时,中间有空格,它没有返回任何匹配项。我有一种感觉,这可能是因为在这种情况下库中的一些不正确的解析。是这样吗?

如果您指的是在未加引号的属性值中添加空格,那么它不是库中的解析错误。选择器本身无效,因为不带引号的属性值中的空格明显无效。

如果无法识别引用的属性值,则 是库中的解析错误。