1
4

1 回答 1

3

要在被点击的元素中查找链接,请使用find(或仅对于元素的直接子元素,children):

$('li.level2').click(function(e) {
    if (e.target.tagName.toUpperCase() !== "A") {
        $(this).find('a').click(); // Or $(this).children('a').click();
    }
});

请注意,我已过滤掉源自锚点的事件,因此它不会递归。

但也有一个 CSS 解决方案:您可以通过将其更改为(取决于您的列表的样式)来使锚点填充列表项。display: block


如果目标是跟随链接,那么您可以使用 JavaScript 做到这一点(例如,如果您不想li使用 CSS 填充链接):

// Clicking the `li` clicks the link
$('li.level2').click(function(e) {
    var url = $(this).find('a').attr('href'); // Or .children
    if (url) {
        window.location = url;
    }
});

// Clicking the link stops propagation (so the li doesn't see it)
$('li.level2 a').click(function(e) { // Or `$('li.level2 > a')... for just immediately children
      e.stopPropagation();
});

实例| 资源

于 2013-10-27T11:49:10.803 回答