使用jQuery查找父div的数据属性值几个级别

时间:2017-07-09 16:50:46

标签: javascript jquery html jquery-selectors

我正在尝试从具有data-id属性的锚标记访问最近的div。

.parent().parent().parent()有效,但我真的试图避免这样做。

<div class="panel panel-default" data-id="@customer.Id">
        <div class="panel-heading clearfix">
            @customer.Name
            <div class="pull-right">
                <a class="btn btn-sm btn-default js-deleteCustomer" href="#" title="Delete">
                    <i class="fa fa-trash" aria-hidden="true"></i>
                </a>
        </div>
</div>

我尝试了以下内容:

var customerId = $(this).closest("div:has(*[data-id])").attr('data-id');

1 个答案:

答案 0 :(得分:4)

你想要

var customerId = $(this).closest("div[data-id]").attr('data-id');

:has(*[data-id])与具有该属性的元素不匹配。它匹配包含具有该属性的另一个元素的元素。匹配的元素可能没有相同的属性,这可以解释为什么:has(*[data-id])不起作用。例如,它将匹配外部div而不是内部div,如下所示:

<div>
  <div data-id="@customer.Id"></div>
</div>

要匹配具有属性的元素,只需直接附加属性选择器,而无需使用:has()