jQuery 在元素之前查找第一个属性

jQuery find the first attribut before an element

本文关键字:查找 第一个 属性 元素 jQuery      更新时间:2023-09-26

我有以下结构:

<tr data-commercial="commercial_8">
  <td class="tdCommercial">
    Mister X
  <h4>Planning</h4>
  <ul>
    <li data-day="Monday">
      <i class="fa fa-plus-square fa-1"></i>
      <i class="fa fa-minus-square fa-1"></i>
      Lundi
      <span class="number">2</span>
    </li>
    <li data-day="Tuesday">
    <li data-day="Wednesday">
    <li data-day="Thursday">
    <li data-day="Friday">
  </ul>
  </td>
<td class="Monday"></td>
<td class="Tuesday"></td>
<td class="Wednesday"></td>
<td class="Thursday"></td>
<td class="Friday"></td>
<td class="Saturday"></td>
<td class="Sunday"></td>
</tr>

对于jQuery,我正在使用带有元素<i class="fa fa-plus-square fa-1"></i>onClick事件。

从此元素中检索第一个trdata-commercial 属性的最佳方法是什么?

结构可以改变,所以我需要类似"在myElement之前找到第一个数据商业属性"

谢谢!

使用 .closest()

对于集合中的每个元素,通过测试元素本身并在 DOM 树中遍历其祖先来获取与选择器匹配的第一个元素。

例:

var commercial = $(this).closest('tr').data('commercial');

注意:前提是this是指元素<i class="fa fa-plus-square fa-1"></i>

$('#myElement').closest('tr').attr('data-commercial');

使用最接近:

$(this).closest('tr').data('commercial');
$(this).parents("tr").data("commercial")

在 jquery 中使用 .closest()

$(this).closeset('tr').data('commercial');