2011-08-20 54 views
0

我需要在悬停一系列链接时获取下一个链接的href值。我有这个:在JQuery中获取下一个元素的属性

<div id="foo"> 
    <ul> 
     <li><a href="#tabs-1">Nunc tincidunt</a></li> 
     <li><a href="#tabs-2">Proin dolor</a></li> 
    <li><a href="#tabs-3">Aenean lacinia</a></li> 
</ul> 
</div> 

$("#foo a").hover(function() { 
    var href = $(this).next().attr('href'); 
    console.log(href); 
}); 

看起来不错,但我在我的控制台中'undefined'。

我是新来的JQuery,但不是JS。有任何想法吗?

TIA

+0

你确定下一个元素是'了'标签? – mowwwalker

+0

我来自YUI3,其中初始选择器将返回一个节点列表。我想这是不同的。现在尝试。 – user903277

+0

@user:'$(“#foo a”)'返回一个带'.length'属性的对象,以及由数字索引引用的匹配元素。但在分配'.hover()'处理程序后,该集合将被丢弃。在处理程序内部,“this”仅仅是对接收事件的单个元素的引用。可以缓存最初的选择,例如在'foo_a'中,然后执行'var idx = foo_a.index(this); var href = foo_a.eq(++ idx).attr('href');',但大多数人喜欢遍历DOM来到下一个元素。 – user113716

回答

0

怎么样

$('#foo a').hover(function() { 
     var href = $(this).closest('li').next().find('a').attr('href'); 
    });