2012-02-20 53 views
1

我想创建一对夫妇,如果语句使用包含(* =)和img(=)来获取ID。我可能会做错什么?基于多个变量(特定字符串)的JQuery select

if($("div[id*='Point_'], [img='gray.png']").length > 0) { 

// do something gray 
} 

if($("div[id*='Point_'], [img='red.png']").length > 0) { 

// do something red 
} 
<div id="Point_1"> 
    <img src="gray.png"> 
</div> 
<div id="Point_2"> 
    <img src="red.png"> 
</div> 
+0

你有尝试切换你的报价和双引号?即时通讯不知道它是否重要,但jQuery网页都有属性值双引号。 – jbabey 2012-02-20 19:09:24

+0

@ jbabey无所谓,只要你一致。如果您的总体选择器包含在双引号中,则使用单引号(或者根本没有值),以匹配您的属性值。如果您的总体选择器包含在单引号中,请使用双引号。就我个人而言,我更愿意将我的Javascript字符串包含在单引号中,因为如果我需要(例如动态创建和附加DOM节点),可以更容易地将HTML复制到它们中。 – 2012-02-20 19:21:42

+0

@AnthonyGrist我更喜欢单引号,并感谢您的信息! – jbabey 2012-02-20 19:23:49

回答

4

您正试图使用​​标签选择器,如属性选择器。如果要匹配<img>标记,其中src属性等于gray.png,那么正确的选择器是$('img[src="gray.png"]')

此外,这可能是也可能不是正确的你想做什么,但在jQuery选择器中的逗号就像一个OR,所以你说“给我任何<div>元素,其中id属性包含文本'Point_'或任何<img>元素,其中src匹配'gray.png'。“如果这就是你想要的,那就好。

然而,似乎更可能是你想要做的是选择<img>元素的src等于gray.png这是一个<div>内含有“Point_”的ID,所以选择应该是:

$('div[id*="Point_"] img[src="gray.png"]') 
+0

谢谢,非常有道理。 – user1040259 2012-02-20 19:18:26

2

如果你想选择你需要从字符串删除逗号的特定字符串。用逗号分隔选择器会根据任何选择器选择多个元素。没有逗号在所有选择器上选择匹配。见here