2013-08-16 33 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