JQuery使用类查找最近的父级

时间:2017-03-08 00:35:22

标签: jquery jquery-selectors

在以下结构中

<div class="thisNot">
    <table style="width:100%" class="thisOneUknow">
      <tr>
        <th id="imhere">Firstname</th>
        <th>Lastname</th> 
        <th>Age</th>
      </tr>
      <tr>
        <td>Jill</td>
        <td>Smith</td> 
        <td>50</td>
      </tr>
      <tr>
        <td>Eve</td>
        <td>Jackson</td> 
        <td>94</td>
      </tr>
    </table>
</div>

如果我在$(&#39;#imhere&#39;)上,如何找到与班级最近的父级并提取该值?在这种情况下得到thisOne(总是认为我站在那里)

编辑:类thisOneOknown是自动生成的,因此每次Page Load都会更改,因此选择器能够找到带有类的第一个父级并存储/返回它。 Somethinng喜欢 var nearestParentClass = $(&#39; #imhere&#39;)。最近(&#34;:hasParent()&#34;);

2 个答案:

答案 0 :(得分:3)

$('#imhere').closest('.thisOne');

修改后的问题更新:

我害怕我不明白你现在要问的是什么,不过我会猜一猜。以下内容应该允许您测试每个父级到DOM根目录:

var element = $($('.lobster')[6]);
while((element = element.parent()).length){
    if(element.is('table')){
        break;
    }
}

// element variable contains the matched DOM element

答案 1 :(得分:1)

你可以使用过滤方法,试试我为你准备的这个例子。我希望能帮助你。

$(function() {
  var tt= finder('.thisOne','#imhere');
    $('.result').append('<div>data found:'+tt.length+'</div>');
  
  // some unknow class
  var ss= finder('.thisOne','#imNothere');
  $('.result').append('<div>data found:'+ss.length+'</div>');
  
});

function finder(searchMe, checkMe){
  return $(searchMe).filter(function(index) {
    return $(this).find(checkMe).length > 0;
  });
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="thisNot">
  <table style="width:100%" class="thisOne">
    <tr>
      <th id="imhere">Firstname</th>
      <th>Lastname</th>
      <th>Age</th>
    </tr>
    <tr>
      <td>Jill</td>
      <td>Smith</td>
      <td>50</td>
    </tr>
    <tr>
      <td>Eve</td>
      <td>Jackson</td>
      <td>94</td>
    </tr>
  </table>
</div>
<div class="result"></div>