查找 div 父级 jQuery 的数据属性值

Finding the data attribute value of a parent div several levels up with jQuery

我正在尝试从具有 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');

你想要

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()