使整个<li>元素可单击,但在单击内部链接时不要触发链接</li>

时间:2010-10-04 23:32:42

标签: javascript jquery onclick

过去几天我一直在寻找解决方案,我并没有真正找到我正在寻找的解决方案。

我有这样的事情:

<ul>
   <li>
      <a href="http://www.link.com" class="li-url"></a>
      <h1>Title</h1>
      Lorem ipsum dolor <a href="http://www.something.com">Something</a>. Etc, blah blah.
   </li>
</ul>

我需要什么:

  • 点击LI元素:访问www.link.com
  • 点击LI内的“Something”:访问www.something.com(不要访问www.link.com)

(我不知道是否可能,但如果我可以点击LI元素并且如果我在键盘上按住我的“alt”键就会很棒,链接会在新标签页中打开......像任何其他链接一样。但我不知道这是否可能)

2 个答案:

答案 0 :(得分:3)

这是一种方式。在jsfiddle.net上测试过它对我有用。

$('li').click(function() {
    window.location = $(this).find(':first-child').attr('href');
});​​​​​​​​​

就alt键而言,我不确定是否可行。我让用户决定是否要在新标签/窗口中打开链接。

答案 1 :(得分:3)

您可能也对event.stopPropagation()感兴趣。这将允许您阻止事件冒泡(也就是通知点击的li

$('ul > li').click(function(e) {
    // Go to link.com
}).children('a').click(function(e) {
    e.stopPropagation();
    // Go to something.com
});

​http://jsfiddle.net/erF3S/