2011-09-28 153 views
24

所以我正在研究从后端团队构建时没有深思熟虑的事情。这给我留下了一个充满div的文档。当元素有多个类时,jquery通过特定的类来查找元素

我正在做的是从我需要点击的元素回滚,获取父容器,然后找到父母中有一个元素class="alert-box warn"class="alert-box dead",等等......基本上,我试图使用多个每个元素上的类选择器。当我试图找到只是alert-box它似乎并不正确。我假设,因为它有warn,死亡,``等等......

我怎样才能找到alert-box*或相当于通配符的概念?

+2

你能发布你的HTML标记的样本吗? –

回答

52

您可以组合选择这样

$(".alert-box.warn, .alert-box.dead"); 

或者,如果你想有一个通配符使用attribute-contains selector

$("[class*='alert-box']"); 

注意:最好你会使用上述选择时知道元素类型或标签。知道标签可以使选择器更有效率。

$("div.alert-box.warn, div.alert-box.dead"); 
$("div[class*='alert-box']"); 
+0

我会推荐第一个选择器。 – Bojangles

+1

如果您有兴趣确保元素的类以“alert”框开头,而不仅仅是“contains”警告框,您也可以用* =替换^ =。 –

+0

我刚刚发布了一个示例jsfiddle https://jsfiddle.net/frxyqzw3/2/显示类* idea – shadi

2

元素可以有任意数量的className,但是它只能有一个class属性;只有第一个会被jQuery读取。

使用您发布的代码,$(".alert-box.warn")将工作,但$(".alert-box.dead")不会。

+0

只有第一个'class =“”'属性会被浏览器读取,更不用说jQuery了。 – Bojangles

+0

这就是我想要得到这个答案的一点,是否不够清楚? –

+0

我只是想澄清一下,由于浏览器的HTML解析器忽略了它们,jQuery实际上并不会看到任何进一步的'class =“”'es。 – Bojangles

-1

您正在寻找http://api.jquery.com/hasClass/

<div id="mydiv" class="foo bar"></div> 

$('#mydiv').hasClass('foo') //returns ture 
+4

不,他不是 - 他想根据自己的班级来选择元素,而不是看他是否拥有班级的元素。 – Bojangles

3
var divs = $("div[class*='alert-box']"); 
7

您可以选择多类元素,像这样:

$("element.firstClass.anotherClass"); 

只需链的下一个类上的第一个,没有一空间(空间意味着“的孩子”)。

相关问题