div中的jQuery选择器锚点

时间:2012-11-20 17:23:03

标签: javascript jquery html selector

我有以下HTML代码:

<div id="mycontainer">
   <p> title </p>
   <ul>
   <li><span>**</span><a href="...">KEY</a></li>
   </ul>
   <ul>
   ...
   </ul>
</div>

我如何获得KEY值?换句话说,从id =“mycontainer”的div中,我将如何从第一个ul获取元素的内容?

6 个答案:

答案 0 :(得分:10)

$("#mycontainer ul:first a").text();

在这里,有一个小提琴:http://jsfiddle.net/8tvTt/

答案 1 :(得分:2)

这样的事情将实现你所追求的目标:

$("#mycontainer ul:first a").text();

答案 2 :(得分:1)

这有效:

$('#mycontainer ul:eq(0) a').text();

这也有效:(更具可读性)

$('#mycontainer ul:first a').text();

答案 3 :(得分:1)

使用此:

$('#mycontainer a').text();

答案 4 :(得分:1)

虽然很多现有的答案都会实现您所追求的目标,但我认为您真正要求的(或至少您真正需要的)是对jQuery selectors和{{3}的熟悉程度}。

很多人似乎都假设你想要链接元素的内部文本,我不确定是这种情况。如果不提供此标记的变体而不考虑选择器的速度,任何数量的答案都可以达到您想要的效果,包括与$('a').text();一样愚蠢的东西,因为它是您提供的标记中唯一的a。我们只能猜测情况。了解每个答案的工作方式(以及为什么不成功的答案不起作用)以及为什么会更有帮助。

选择器的特异性是可取的,但是您必须权衡通过DOM实际成本高昂的成本和收益。你会一直得到一个链接的文字内容吗?它可能包含html吗?你真的想要包装<a>吗?

如果您只想要a#mycontainer的文字内容,请确定:

$("#mycontainer ul:first a").text();

$('#mycontainer').find('a').text();可能会更快。 (等等,什么是find()?,你问,为什么它会更快?)但是如果KEY被格式化<strong>,你想要将它带到你正在做的任何事情上怎么办?您可能希望使用.html()代替。如果您想要a本身,为什么不:

$("#mycontainer ul:first a");

但是,如果每个li都有a?

,该怎么办?
$("#mycontainer ul:first li:first a").clone();

你也想要跨度吗?

$("#mycontainer ul:first li:first").clone();

$("#mycontainer ul:first li:first").html();

你想要包裹<li>吗?

$("#mycontainer ul:first li:first").clone();

四处游玩,阅读更多,然后你不会让所有人(包括我自己)对一些愚蠢的,轻松的代表如此贪婪。

答案 5 :(得分:0)

您需要读取jquery选择器...但使用此

$('#mycontainer ul:first a').text();