2010-01-26 66 views
1

假设我有这样的:获得“HREF”另一个元素中的锚的价值

<ul id="menu"> 
<li><a href="someplace">some text</a><li> 
... 
</ul> 

我要尽一切li点击,所以我需要提取的href这样的值:

$('#menu li').click(function() { 
    var link_to = $(SELECTOR THAT I NEED).attr('href'); 
    window.location = link_to; 
}); 

这是什么正确的代码?有没有更好的办法?

+0

为什么要绑定点击li?..为什么不让锚点做它做的?将锚点的CSS更改为高度:100%和宽度:100% – Reigel 2010-01-26 13:41:02

+0

因为我没有想到这一点:)请参阅我对以下答案的评论 – 2010-01-26 13:43:57

回答

2

既然你有一个链接在那里,为什么不使用它呢?

你可以用css其设置为display:block,如果你想让它占据整个li宽度..

#menu li a{display:block;} 

,并避免使用jquery的内置功能。(如果我理解正确的..

+0

好点,没想到'display:block'。这并不理想,因为'li'元素的填充位于'a'块之外,因此“死”。 – 2010-01-26 13:42:01

+0

是的,你是对的..但它是值得一枪,而不知道你到底是什么:)上面asnwers应该做到这一点然后.. – 2010-01-26 13:43:58

+0

我会投票这一个并删除我自己的职位。当锚在语义上处理onclicks时,有很多点击绑定显然是多余的。我会说这绝对是值得的CSS去除李创建的填充。 – 2010-01-26 14:14:32

3
$('#menu li').click(function() { 
    var link_to = $(this).children("a").eq(0).attr('href'); 
    window.location = link_to; 
}); 
+0

我个人更喜欢'$(this).children(“a:第一个“)。attr(”href“)' – 2010-01-26 13:48:19

+0

'$('a:first',this)'是避免必须通过'$'函数运行单击'li'的一种简单方法。以这种方式提供上下文与'find'完全相同。我已经投下了我不愿意做的选择,但我认为这篇文章及其评论对于那些偶然发现这个问题的人来说是一份有效的文档,有一个*类似的*自己的问题,其中Gaby的答复不适用=) – 2010-01-26 14:33:27