使用 jQuery 从元素中获取特定文本内容

发布于 2025-01-04 19:48:25 字数 767 浏览 1 评论 0原文

我需要使用 jQuery 从页面上的元素中提取一些文本,但我不知道如何获取我需要的部分。

这是我的 HTML:

<a href="#" class="song">
    Soulstar
    <div>by <span class="artist">Musiq Soulchild</span></div>
</a>

我想提取 .artist 的内容(在本例中为 Musiq Soulchild)。首先,我尝试了这个:

var this_artist = $(this).children().text();
alert(this_artist);

这给了我 by Musiq Soulchild (因为 this 元素)。因此,我假设我所要做的就是在 .children() 方法中指定一个选择器,以将其范围缩小到 .artist 类,如下所示

var this_artist = $(this).children(".artist").text();
alert(this_artist);

:给我...什么也没有。我也尝试过 $(this).children("span").text(); ,同样,也没有返回任何内容。

我做错了什么?

I need to pull out some of the text from an element on my page, using jQuery, and I can't figure out how to get the piece I need.

Here's my HTML:

<a href="#" class="song">
    Soulstar
    <div>by <span class="artist">Musiq Soulchild</span></div>
</a>

I want to pull out the contents of .artist (in this case, Musiq Soulchild). First, I tried this:

var this_artist = $(this).children().text();
alert(this_artist);

That gives me by Musiq Soulchild (since this is the <a> element). So then I assumed that all I had to do was specify a selector inside the .children() method to narrow it down to the .artist class, like this:

var this_artist = $(this).children(".artist").text();
alert(this_artist);

But that gives me...nothing. I've also tried $(this).children("span").text(); and, likewise, also get back nothing.

What am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

¢好甜 2025-01-11 19:48:25

.children() 仅遍历直接子级 - 鉴于您的标记 .artist 不是直接子级。使用 find() 代替:

var this_artist = $(this).find('.artist').text();

.children() only traverses the immediate children - given your markup .artist is not an immediate child. Use find() instead:

var this_artist = $(this).find('.artist').text();
不乱于心 2025-01-11 19:48:25

您的选择器不正确,因为 .artist 不是 a 元素的直接子元素。相反,您需要使用 $(this).find()

var this_artist = $(this).find(".artist").text();
alert(this_artist)  

示例小提琴

Your selector is incorrect since .artist is not a direct child of the a element. Instead you need to use $(this).find():

var this_artist = $(this).find(".artist").text();
alert(this_artist)  

Example fiddle

少年亿悲伤 2025-01-11 19:48:25

您应该使用 .find 而不是 .children.children 搜索直接子级,而 .find 搜索后代。

You should use .find instead of .children. .children searches the immediate children, while .find searches descendants.

夜无邪 2025-01-11 19:48:25

要么

$(this).find("span.artist")

或者

$("span.artist", this)

应该这样做...跨度是 div 的子级,而不是锚点。

either

$(this).find("span.artist")

or

$("span.artist", this)

should do it... the span is a child of div, not anchor.

紫罗兰の梦幻 2025-01-11 19:48:25

如果这是链接的对象,则此代码返回范围文本:

var this_artist = $(this).find('span').text();
alert(this_artist);

If this is an object of your link, this code returns span text:

var this_artist = $(this).find('span').text();
alert(this_artist);
命比纸薄 2025-01-11 19:48:25

使用:

$("#results").on("click","a", function(event){
var myartist = $(this).find('.artist').text();
}); 

use:

$("#results").on("click","a", function(event){
var myartist = $(this).find('.artist').text();
}); 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文