2014-12-29 57 views
0

我有以下结构之前找到的第一个attribut:jQuery的元素

<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,我使用的是onClick事件与元素<i class="fa fa-plus-square fa-1"></i>

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

结构可以改变,所以我需要的东西,如“发现myElement前的第一个数据商业属性”

谢谢!

回答

1

使用.closest()

对于组中的每一个元素,获取通过测试元件本身和DOM树向上遍历通过它的祖先选择相匹配的第一个元素。

实施例:

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

注:提供this指元件<i class="fa fa-plus-square fa-1"></i>

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

最接近使用:

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

在jquery中使用.closest()

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