【问题标题】:Getting 'href' value of an anchor inside another element在另一个元素内获取锚点的“href”值
【发布时间】:2010-01-26 13:32:31
【问题描述】:

假设我有这个:

<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;
});

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

【问题讨论】:

  • 为什么一定要绑定li上的点击?..为什么不让anchor做它做的事呢?将锚的 css 更改为 height:100% 和 width:100%
  • 因为我没想到 :) 请参阅我对下面答案的评论

标签: javascript jquery jquery-selectors


【解决方案1】:
$('#menu li').click(function() {
    var link_to = $(this).children("a").eq(0).attr('href');
    window.location = link_to;
});

【讨论】:

  • 我个人更喜欢$(this).children("a:first").attr("href")
  • $('a:first', this) 将是避免通过$ 函数运行单击的li 的一种巧妙方法。以这种方式提供上下文与find 完全相同。我已经投票支持不要做你正在尝试做的事情,但我认为这篇文章及其 cmets 对于那些偶然发现这个问题的人来说是一个有效的文档,有自己的类似问题,但 Gaby 的回答不适用 =)
【解决方案2】:

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

如果您希望它占据整个 li 宽度,可以将其设置为 display:blockcss ..

#menu li a{display:block;}

并避免将 jquery 用于内置功能..(如果我理解正确..

【讨论】:

  • 好点,还没想到display: block。这并不理想,因为 li 元素的填充在 a 块之外,因此“死”了。
  • 是的,你是对的 .. 但是在不知道你到底在追求什么的情况下值得一试 :) 上面的 asnwers 应该这样做..
  • 我会投票赞成并删除我自己的帖子。当锚在语义上处理点击时,有很多点击绑定显然是多余的。我会说删除 li 创建的填充绝对值得 css 努力。
  • 我同意,接受这一点,因为它回答了我问题的“有没有更好的方法”部分。其他答案也很好,你的大卫是最简洁的版本
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-09
  • 1970-01-01
  • 1970-01-01
  • 2021-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多