问问题
400 次
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 回答