【问题标题】:jQuery - Get element near stringjQuery - 获取字符串中的元素
【发布时间】:2013-08-19 01:13:28
【问题描述】:

我有一个问题。我有一个来自 HTML 页面的字符串。我需要捕获“靠近”特定字符串的元素,例如:

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

我需要获取“评分:”,然后捕获最接近的下一个元素。我可以用 jQuery 做吗?我试过了,但我不明白我可以使用哪个文本“评级:”选择器。

谢谢。

【问题讨论】:

  • 你能不能把ratings这个词用一个类包裹在一个span中?这将使选择器变得更加容易。如果没有,您将不得不使用contents(),然后在textNodes 中进行挖掘,这不会很漂亮。
  • 正如 Rory McCrossan 所说,使用包装元素会更容易,但您可以从 $('*:contains("Ratings:")'); 之类的语法开始

标签: jquery html string next


【解决方案1】:

最好的方法是给你一个这样的课程:

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

在你的 jQuery 中就是这样:

$('.ratings').html()

这将返回:

如果要保存,只需添加

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

如果你有多个评级,它会稍微复杂一点,但不会太多。

【讨论】:

  • 我无法修改源页面,所以页面原样。
【解决方案2】:

这对我有用:

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

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

它并不漂亮,并且并非在所有情况下都有效,但它确实适用于您的示例。如果您能提供其他示例,我们可能会提供更多帮助。

【讨论】:

  • 谢谢。我已经尝试过您的解决方案,但它返回了大量强大的标签。因为我认为它会检查 BODY 是否包含“Ratings:”,如果这是真的,它会搜索所有“强”标签。这不好!
【解决方案3】:

将Ratings: 文本包装在&lt;span&gt; 标记中并应用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() 函数来获取所选元素的紧随其后的兄弟(&lt;a&gt; 标签),如下所示:

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

参见示例jsFiddle。

【讨论】:

    猜你喜欢
    • 2013-05-30
    • 1970-01-01
    • 2018-12-01
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 2019-01-28
    • 1970-01-01
    相关资源
    最近更新 更多