0

我正在尝试获取链接的显示文本并最终使用了这个标签,它看起来不够 jquery-ish..还有其他选择吗?

对于以下 HTML

<div id="c-100001" class="cal-list-row cal-slug-item selected"><a href="" class="cal-name">Link Text</a></div>

下面的 jquery 看起来很不优雅,虽然它可以工作

string = $('#' + c_key).find('a').contents()[0].data
// string should be plain "Link Text" 
4

4 回答 4

1

Try this

var string = $('#' + c_key).find('a').html();
于 2012-07-17T08:48:38.627 回答
1

jsBin 演示

var string = $('#' + c_key).find('a').text();
于 2012-07-17T08:13:01.883 回答
0

我正在回答我自己的问题,以便任何其他寻找正确答案的人都能找到它。感谢所有尝试提供帮助的人,但这是由特定 jquery 插件引起的问题,该插件正在修改默认 jquery 行为

基本上由 Stan Lemon (https://bitbucket.org/stanlemon/jquery-templates/) 贡献的 jquery-template 插件正在改变 jquery 行为,因此 .text() 似乎返回一个对象列表而不是第一个文本物品。

向作者报告同样的情况,虽然这个插件似乎已经失效......可能会迁移到 jquery UI 团队在这里开发的内容(http://wiki.jqueryui.com/w/page/37898666/Template)

报告所有这些,希望它也可以帮助其他人:)

于 2012-07-17T09:35:22.160 回答
0

您可以使用获取容器中的所有链接

var links = ("a", $("#containerElement"));

这将为您提供<a ..元素列表。

然后,您可以遍历它们,或者.text()如果我仍然没有包装为 jQuery 元素,或者如果您检索到纯 HTML 标记,您可以简单地使用第一个并调用它.innerHTML

例子:

var linkText = $("a", $("#myContainer"))[0].innerHTML;

或者

var linkText = $("a", $("#main")).first().text();
于 2012-07-17T08:15:58.980 回答