javascript - 阻止子 li 可点击,但保留包含 a 的功能

标签 javascript jquery html

我的导航如下所示:

<ul class="first-ul">
    <li class="toggle-sub-menu"><a href="link1.html">1
        <ul class="second-ul">
            <li><a href="link2.html">2</a></li>
            <li><a href="link3.html">3</a></li>
        </ul>
    </li>
</ul>

我的第二个 ul 被隐藏,并通过点击“切换子菜单”进行切换:

$('.toggle-sub-menu').click(function() {
    $(this).children('ul').slideToggle(200)
});

现在,因为我只想在单击带有“toggle-sub-menu”类的 li 时隐藏第二个 ul,而不是如果我添加了像子 li 或 a 这样的子项

$('.toggle-sub-menu').click(function() {
    $(this).children('ul').slideToggle(200)
}).children().click(function(e) {
  return false;
});

这可以防止 ul 在单击子项时隐藏,但是,它会使带有 href 的“a”不再可单击。

我试过了

$('.toggle-sub-menu').click(function() {
    $(this).children('ul').slideToggle(200)
}).children('ul').children('li').click(function(e) {
  return false;
});

但是,a 标签仍然不可点击。我该怎么做才能使 li 不可点击但 a 标签起作用?

最佳答案

您可以这样修改它:将类 list-element 添加到您的 lis

$('.toggle-sub-menu').click(function() {
    $(this).children('ul').slideToggle(200)
}).children('ul').children('li').click(function(e){
 if($(e.target).hasClass('list-element'))     
     return false;
});

这不会使 anchor 标记不可点击。

关于javascript - 阻止子 li 可点击,但保留包含 a 的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36009750/

相关文章:

javascript - 在动态创建的文本区域中实现脚本

javascript - 类似于 Javascript 中的 java.util 的东西?

javascript - 为什么我的页面变成空白?

javascript - Node.js 生成器

javascript - Tinymce 文本编辑器不适用于 Bootstrap 模式窗口

php - 将 php 链接到 jquery

html - 使用 HTML5,如何在表单提交中使用 contenteditable 字段?

html - 将鼠标悬停在 li 元素上并对子 img 做一些事情

javascript - 如何检测iframe上的Onclick事件[跨域]

javascript - 使用jQuery获取div的绝对位置或相对位置