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