如何在jquery中找到兄弟是特定元素的元素的第一个祖先?

时间:2016-09-28 06:44:09

标签: jquery dom jquery-traversing

downloadRequest.downloadProgress(closure:  Request.ProgressHandler)
downloadRequest.responseData(completionHandler: (DownloadResponse<Data>) -> Void)

这里我想找到一个元素的祖先(这里有id:starting_point),其前一个兄弟是&#34;输入&#34;。这里的答案是带有id&#34; ending_point&#34;因为它之前的兄弟姐妹是&#34;输入&#34;。如何找到这个?

3 个答案:

答案 0 :(得分:0)

这是我的解决方案:

  $("input + span").first();

这是你的选择器:$("input + span")。它会在输入后选择他们所遵循的所有跨度。并使用.first()选择第一个。

我为你创建了JSFiddle

这是Selectors Reference

Greetz Eldo.ob

答案 1 :(得分:0)

您可以结合使用.parents.filter

var $ep = $("#starting_point")
  .parents()
  .filter(function() {
    return $(this).prev().is("input");
  })
  .first();

// NB: the parents() method return all parents, CLOSEST ONE FIRST

console.log($ep);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div>
  <input type="text">
  <span id="ending_point">
    <label>
      <span>
        <input type="text" id="starting_point">
        <span></span>
      </span>
    </label>
  </span>
</div>

答案 2 :(得分:0)

如果您事先知道层次结构,那么我会使用

$( "#starting_point" ).parent().parent().parent().parent().find( "#ending_point" );

或使用.parentsUntil()(https://api.jquery.com/parentsUntil/)执行某些操作。 (好吧,不是一个漂亮的解决方案,但肯定有效。)

如果您不知道层次结构(它是动态创建的),但您确定#starting_point比#ending_point“低”,那么您可以为此创建一个递归函数,检查您所属类型的每个级别寻找。

// start_obj is the jQuery object you start your recursive function from
// end_type is the type of element you are looking for in the hierarchy (e.g. input[ type="text" ] in your case

function get_sibling_on_other_level( start_obj, end_type ) {
    var grampy = start_obj.parent().parent();
    if ( grampy.find( end_type ).length > 0 ) {
        return grampy.children( end_type );
    } else {
        // start the iteration "one level higher"
        // actually you should stop at "body" level - if you did not find
        // what you were looking for, then it's not in that branch of hierarchy
        get_sibling_on_other_level( start_obj.parent(), end_type );
    }
}

函数中使用的其他jQuery方法:https://api.jquery.com/children/