2010-09-20 92 views
21

我想用src屬性選擇一個圖片(帶有jQuery)。該圖像是在一個UL和一個div集合中。 ul的id是「可排序的」。jQuery select src選擇圖片

這裏是我的HTML:

<ul id="sortable"> 
    <li id="pic_0"> 
    <div class="sortEleWrapper"> 
     <div class="imgWrapper"> 
     <img src="/test1.jpg"> 
     </div> 
     <input type="text" name="picText" id="picText" value="""" style="width:105px;color:#aaa" class="sortInput"> 
    </div> 
    <input type="hidden" id="picSrc" name="picSrc" value="/test1.jpg"> 
    </li> 
</ul> 

這裏是我的js:

if($('#sortable').find('img[src="/test1.jpg"]').length > 0){ 
    alert('img exists'); 
}else{ 
    alert('img doesnt exists'); 
} 

我的問題是,他們沒有發現任何圖像。但是,如果我寫這樣的js:

if($('img[src="/test1.jpg"]').length > 0){ 
    alert('img exists'); 
}else{ 
    alert('img doesnt exists'); 
} 

讓他們找到圖像。

+0

您不需要明確地測試長度。剛寫'if($('img [src =「/ test1.jpg」]')。length){...}' – 2010-09-20 15:21:04

+0

另外,我不確定爲什麼你有像'value =「」「」 ' - 這不是有效的HTML。 – 2010-09-20 15:25:30

回答

23

我不知道爲什麼不同,但嘗試使用the $= attribute ends with選擇器。

似乎工作。

實施例:http://jsfiddle.net/bTf7K/

$('#sortable').find('img[src$="/test1.jpg"]') 

編輯:的差異可以具有是與獲得該jQuery使用在不同的時間的屬性值的方法。

使用本地方法:

element.getAttribute("src") // returns the actual value that was set 

element.src // returns the value but with the full domain path 

所以我猜的jQuery在不同的時間使用這兩種。

+0

我不認爲這是問題所在。他指出他的問題與他的父母選擇器有關。編輯:我收回。我明白你的意思。也許這是一個開放的bug報告。 – BBonifield 2010-09-20 15:26:58

+1

@BBonfield - 測試我的例子。它糾正了這個問題。 ''顯然是'#sortable'的後代,但是'.find('img [src =「/ test1.jpg」]')'失敗,而'.find('img [src $ =「/ test1.jpg「]')'成功。這是失敗的測試:http://jsfiddle.net/bTf7K/3/ – user113716 2010-09-20 15:28:05

+0

是的,它適用於$。謝謝!!!!! – Neoklosch 2010-09-20 15:29:54