JQuery prevendDefault [禁用链接] 列表内但不包括子列表中的链接

标签 jquery parent-child children preventdefault

我有一个想要禁用的链接。问题是它位于具有子列表的 li 中,因此它也禁用了这些链接。 HTML 看起来基本上是这样的:

<div id="main">
<ul class="index"><li class="firstLI"><a href="some other URL"></a></li>

<li class="secondLI"><a href="disableMe">Disable this Link</a>
   <ul>
        <li><a href="dontDisableMe">Don't Disable Me</a></li>
        <li><a href="dontDisableMe">Don't Disable Me</a></li>
   </ul>
</li>
<li>third</li></ul>
</div>

我想禁用“li”类 secondaryLI 中的“a”,但不是所有伴随的 UL 子级。

我已经尝试过:

function preventDefault(e) {
        e.preventDefault()};

    $("#main li:nth-child(2) a").bind("click", preventDefault);

    $(".secondLI").unbind("click", prevenDefault);

$("#main li:nth-child(2) a").click(function(e) {
    e.preventDefault();
    //do other stuff when a click happens
});

最佳答案

使用> selector仅选择直接子级。

$("#main li:nth-child(4) > a").click(function(e) { ...

或者,如果只有一个链接,请使用 :first selector .

$("#main li:nth-child(4) a:first").click(function(e) { ...

或者更好的是,如果可以的话,给链接一个类或 ID,然后直接选择它。

关于JQuery prevendDefault [禁用链接] 列表内但不包括子列表中的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10151961/

相关文章:

jquery - Select2 自定义匹配器

javascript - 无法检索从 jQuery 发布到 Django 的对象数组

angular - 我如何在 Angular 中将我的数据从父组件共享到子组件?

collections - AutoMapper 在映射子对象时传递父引用

css - 有没有办法选择具有相同类名的第一个表的子元素,然后选择第一个 td 元素?

javascript - 链接上的 jQuery Datatable javascript 不适用于多个页面

javascript - 多人同时使用 AJAX/PHP 协同编辑文件?

MYSQL 查询从子 ID 获取完整的父历史

swift - 根据返回的 queryEqual(toValue) 填充 TableView

javascript - 向父级已禁用事件的子级添加事件监听器