2012-02-29 14 views
2

我正在尋找一個jQuery選擇查找所有圖片鏈接,這是說很簡單,jQuery選擇的圖片鏈接,其容忍的查詢字符串

$('a[href$="jpg"], a[href$="jpeg"], a[href$="png"], a[href$="gif"]')

但這打破,如果我的鏈接後有一個查詢字符串,如:

<a href="http://example.com/image1.jpg?1737892">link</a>

有沒有辦法選擇像上面所有的圖像鏈接,但如果圖像鏈接有在最後一個查詢字符串,它仍然可以工作它?

+0

可以使用['filter'](http://api.jquery.com/filter/)和執行邏輯。 – 2012-02-29 15:33:44

+0

對不起,@FelixKling,不關注,你能解釋一下嗎?不過濾仍然需要我有一個選擇器,它可以識別圖像的鏈接,但不會妨礙附加到url的查詢字符串? – 2012-03-01 16:49:51

+0

這個想法是選擇所有鏈接並使用'filter'在鏈接上執行一些更復雜的計算,例如使用正則表達式。選擇器非常有限,'filter'可以讓你實現任何邏輯來限制所選元素的集合。 – 2012-03-01 18:04:54

回答

5

這打破是因爲選擇的$部分意味着它只是在尋找jpg原因href結束。使用含有選擇(*)來代替,並且包括延伸點:

$('a[href*=".jpg"], a[href*="jpeg"], a[href*=".png"], a[href*=".gif"]') 

不過請注意,這意味着它也將匹配下列網址:

http://mysite.com/fakelink.jpg.aspx 
http://mysite.com/page.php?param=image.jpg 

所以你不100%保證選擇一個圖像鏈接,即使這種可能性不大。

Example fiddle

+0

+1對於fakelink評論 – mindandmedia 2012-02-29 15:39:16

+0

謝謝,我想我也可以這樣做:'$(a [href $ ='。jpg'],a [href * ='。jpg?]等等)''對嗎?我需要擺脫問號嗎? – 2012-03-01 16:46:20

4

你可以在.添加到表達式,如「.JPG」,然後使用*=

$('a[href*=".jpg"], a[href*=".jpeg"]') 
+0

@ j08691,也請解釋原因,或者展現更好的解決方案。謝謝。 – mindandmedia 2012-02-29 15:38:57

+0

@ j08691對於具有querystrings的圖像,這將工作得很好:http://jsfiddle.net/u2MRP/ – 2012-02-29 15:42:00

+0

@rory:會再次upvote。在你的回答中張貼小提琴? – mindandmedia 2012-02-29 15:44:29