【问题标题】:Avoid go to link of block element while clicking on link inside避免在单击内部链接时转到块元素的链接
【发布时间】:2010-10-05 09:10:09
【问题描述】:

我有一个 LI 元素,里面有一个链接和其他链接。

应该是这样的:

jQuery:

$('li').click(function() {
   window.location = $(this).children('a.li-url').attr('href');
});

HTML:

<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>​

问题是,当我点击“某物”时,它还会加载 www.link.com(如果您 alt+单击某物链接,您可以看到这一点。它会在加载链接时在新标签中加载某物。 .com 在您当前的标签中。)

当我点击“某物”时,我只需要加载something.com..

谢谢!

【问题讨论】:

标签: javascript jquery onclick


【解决方案1】:
$('li').click(function(e) {
    if (e.target.tagName.toLowerCase() == 'li') {
        window.location = $(this).children('a.li-url').attr('href');
    }
});​

crazy demo


欢迎来到stackoverflow.com
别忘了接受回答

【讨论】:

  • 谢谢!这样可行。您知道是否可以像普通链接一样通过 alt+click 在新选项卡中加载 LI 链接?
【解决方案2】:

添加这段JS。

$('li a:not(.li-url)').click(function() {
    event.stopPropagation();
});
​

使用我的选择器或其他东西来定位li 中的另一个链接。

【讨论】:

    【解决方案3】:

    试试 this.preventDefault();

    【讨论】:

    • 谢谢!这很完美。最后一件事,可以通过 alt+click 将 LI 链接加载到新选项卡中,就像普通链接一样?
    • 抱歉,preventDefault 也破坏了 LI 链接...所以,不能正常工作。
    • 这不是 preventDefault() 的作用。
    • 对不起,我的意思是 stopPropagation(),但是输入了 preventDefault()。不管怎样,你从别人那里得到了答案。
    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 2010-12-11
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2015-01-03
    相关资源
    最近更新 更多