javascript - 单击链接时,查找带有某个子项的父项是否存在jquery

标签 javascript jquery if-statement parent-child

我正在寻找的是一种方法,用于确定所单击的链接的父级(具有 row-fluid 类)是否包含与预定子级匹配的 id。

到目前为止我尝试过的是Here. (jsFiddle)

谁能解释一下为什么我的代码不起作用?而且,我的编码非常糟糕,所以任何关于速记代码的建议都很好。我经常想得太多

<div class="row-fluid">
    <div id="success-1">Entry One</div>
    <div class="span3"> <a href="#" id="1" class="delete-me">delete</a>

    </div>
</div>
<div class="row-fluid">
    <div id="accord-2">Entry Two</div>
    <div class="span3"> <a href="#" id="2" class="delete-me">delete</a>

    </div>
</div>
<div class="row-fluid">
    <div id="success-3">Entry Three</div>
    <div class="span3"> <a href="#" id="3" class="delete-me">delete</a>

    </div>
</div>

JS:

$('.delete-me').on('click', function () {
    var id = $(this).attr("id");
    if ($(this).parent(".row-fluid").has("#accord-*")) {
        var name = $("#accord-" + id).html();
        alert(name);
    }else{
        var name = $("#success-" + id).html();
        alert(name);
    }
});

最佳答案

以下内容有效 - 仅 if 中的条件已更改:

$('.delete-me').on('click', function () {
    var id = $(this).attr("id");
    if ($(this).closest(".row-fluid").has("[id^='accord-']").length > 0) {
        var name = $("#accord-" + id).html();
        alert(name);
    }else{
        var name = $("#success-" + id).html();
        alert(name);
    }
});

演示:http://jsfiddle.net/RZPW2/15/

您的 if 条件的主要问题:

if($(this).parent(".row-fluid").has("#accord-*")) {

...它始终是真值,因为 .has() 方法返回一个 jQuery 对象而不是 bool 值,并且任何对象都是真值。

此外,.parent() 方法仅获取直接父元素,在 anchor 的情况下,该父元素不是 .row-fluid 元素 - 使用 .closest() 而不是转到该类最接近的祖先。

最后,要通过以特定字符串开头的 id 进行选择,请使用 attribute starts with selector .

如果每个组始终包含 accord-*success-* 元素,您可以为这两个元素提供一个公共(public)类:

<div id="success-1" class="entryName">Entry One</div>

...因为那样你就根本不需要 if 测试:

$('.delete-me').on('click', function () {
    var name = $(this).closest(".row-fluid").find(".entryName").html();
    alert(name);
});

演示:http://jsfiddle.net/RZPW2/18/

关于javascript - 单击链接时,查找带有某个子项的父项是否存在jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18176889/

相关文章:

javascript - Nodejs - 单独文件中的 SQL 查询?

javascript - 在表中显示来自 JavaScript 的数组数据

jquery - 固定标题 - 打开并推送内容

php - 如何在数组中创建一个新字段?

javascript - jQuery 隐藏所有没有类的元素

javascript - Selenium Webdriver 不会点击 Chrome 和 Firefox 中的“保存”按钮

javascript - 使用 JavaScript 将 HTML 表格的第一行移动到 thead 标签下

C 语言中 if else 函数后的代码中断

Javascript 数组变量在循环中丢失

javascript - 如何使用 jQuery 一次向许多不同的按钮添加确认对话框?