2013-08-16 32 views
3

我有一個問題。我有一個HTML頁面的字符串。我需要捕捉元素「接近」一個特定的字符串,像這樣的:jQuery - 獲取字符串附近的元素

<p>This is some text</p> 
Ratings: 
<strong><a href="http://www.foo.co">Kids +13</a></strong> 

我需要「評級」,然後捕獲最接近的下一個元素。我可以使用jQuery嗎?我曾試過,但我無法理解哪些文本選擇器「評分:」我可以使用。

謝謝。

+5

你能不能在課堂上用'span'包裝單詞'ratings'?這將使選擇器變得非常容易。如果沒有,你將不得不使用'contents()',然後在'textNodes'中進行挖掘,這不會很漂亮。 –

+0

正如Rory McCrossan所說,使用包裝元素會更容易,但是您可以從這樣的語法開始:$('*:contains(「Ratings:」)');' – Daniele

回答

0

做到這一點,最好的辦法是給你的一類這樣的:

<a href="#" class="ratings">Kids +13</a> 

在你的jQuery它是那麼簡單:

$('.ratings').html() 

這將返回: Chrome Console output

如果你想保存它,只需添加

var rating = $('.ratings').html() 

如果您有多個評分,它會稍微複雜一點,但不會太多。

+0

我無法修改源頁面,所以頁面是一樣的。 – KLODEnet

0

這爲我工作:

http://jsfiddle.net/LykFa/1/

$("body:contains(Ratings\:)").find("strong").html(); 

這不是漂亮,而且在任何情況下將無法正常工作,但它確實工作的例子。如果你能舉出其他例子,我們可能會提供更多幫助。

+0

謝謝。我已經嘗試了您的解決方案,但它會返回大量強標籤。因爲我認爲它會檢查BODY是否包含「Ratings:」,如果這是真的,它會搜索所有「strong」標籤。這不好! – KLODEnet

0

包裹Ratings:文本在<span>標籤和應用class屬性,像這樣:

<p>This is some text</p> 
<span class="ratings">Ratings:</span> 
<strong><a href="http://www.foo.co">Kids +13</a></strong> 

然後你可以選擇Ratings:文字,像這樣:

$(".ratings:contains(Ratings\:)") 

最後,你可以使用jQuery .next()函數獲取所選元素的緊隨其後的兄弟(您的案例中的<a>標記),如下所示:

$(".ratings:contains(Ratings\:)").next() 

查看示例jsFiddle