-1

我们有:

<div class="companylinks">
   <span class="current">
      <a class="welcome">Welcome!</a>
   </span>
   <span>
      <a class="ic_generalinfo">General Info</a>
   </span>
</div>

我想得到<a>其中的类<span class="current">(这里是“欢迎”)

var selected_tab = $('#companylinks span[class="current"]').closest('a').attr('class');
alert(selected_tab);

但是我得到'未定义',我应该怎么在这里最接近()?

我将不胜感激任何帮助。谢谢

4

5 回答 5

3

closest只在 DOM 中向上遍历,而不是向下遍历。您可能想要使用类似children.

您的代码中还有其他错误;您当前正在访问#companylinks,应该是.companylinks,因为那是类名而不是 ID。除此之外,您span[class="current"]可以写为span.current,尽管这不是错误。

于 2012-12-03T08:23:49.833 回答
0

.closest()函数获取最近的父母而不是最近的孩子。要得到你想要的,只需这样做:

$('a.welcome')

或者,如果您需要更多特异性:

$('.current a.welcome')
于 2012-12-03T08:25:17.170 回答
0

阅读.closest() 的文档

对于集合中的每个元素,通过测试元素本身并向上遍历其在 DOM 树中的祖先来获取与选择器匹配的第一个元素。

改写这个

$('.companylinks span.current').find('a').attr('class');
于 2012-12-03T08:26:28.460 回答
0

嘿,伙计,如果你只想要那个锚元素,你可以这样做:

$(document).ready( function() {
var selected_tab = $('.companylinks .current').find('a').attr('class');
alert(selected_tab);
});
于 2012-12-03T08:28:05.060 回答
0

.closest()沿着父链上升,而不是沿着父链。

要在选择器中指定所有必须满足的多个父母,您可以在选择器中分别列出它们,用空格分隔。在这种情况下,您可以定位<a>.current 中的标签,然后像这样获取它的类:

$(".current a").attr("class");

或者,如果您只想将其范围限定在内部.companylinks,那么您可以使用它;

$(".companylinks .current a").attr("class");

注意:您不需要使用span[class=".current"]. 你可以只使用.current.

于 2012-12-03T08:30:08.140 回答