2017-11-09 18 views
1

編集:親部門の数は異なる場合がありますのでご注意ください。 1つ以上であってもよい。直接要素を検索しない

<div><div>の親を得るために、ラベルを含むクラスratのすべてを試しています。したがって、この場合、最も外側の<div>を返す必要があります。

<div> --> Should be returned 
    <div> 
     <div class="item box1" id="box1">1</div> 
     <div class="item" id="box2">2</div> 
     <div class="item" id="box3">3</div> 
     <div class="item rat" id="box4">4</div> 
    </div> 
    <label>Im the original parent</label> 
</div> 

私は各div要素のクラス属性を追加し、closest()を使用するとき、それは簡単に行うことができるが、この場合のために、私が使用できる一意のセレクタはありません。

それとも私たちはこのようにそれを取ることができます:上記の例を使用して、クラスrat<div>の最も近いラベルを見つける:あなたはあなたのスタイルは、あなたの世界のjQueryに適用した場合

$('.rat') -> selector 
+0

可能な複製を(https://stackoverflow.com/questions/1014861/is-there- a-css-parent-selector) – pwolaq

+0

@pwolaq申し訳ありませんがケースが違います – Sherlock

+0

私はJSなしでこれを行うことはできないと思います。これを行うCSSセレクタはありません。 – sjahan

答えて

1

再帰的なアプローチは、あなたに必要な行動のために最も適している:

function getParentWithLabel(className) { 
 
    function climbRecusively(node) { 
 
     const parent = node.parent(); 
 
     return (parent.find('> label').length ? parent : climbRecusively(parent)); 
 
    } 
 
    return climbRecusively($(`.${className}`)); 
 
} 
 

 
$(function() { 
 
    getParentWithLabel('rat').css('background-color', 'grey'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <div> 
 
     <div class="item box1" id="box1">1</div> 
 
     <div class="item" id="box2">2</div> 
 
     <div class="item" id="box3">3</div> 
 
     <div class="item rat" id="box4">4</div> 
 
    </div> 
 
    <label>Im the original parent</label> 
 
</div>

これが役立ちます。

+0

ありがとう!、私が探していた人。私の実際の要求を満たすために私の最終的な修正か、もしあれば何らかの最適化 – Sherlock

+0

私は助けてくれるとうれしい。 –

0

多分それは容易になるだろう、のようなこの:

$('.rat').parent().next(); 
+0

残念ですが、親divの数はさまざまです。 – Sherlock

+0

私は自分の答えを編集しました。 – CARA

0

あまりにもこの

var parentEls = $(".rat").parents(); 

parentEls.each(function (i, obj) { 
    if($(obj).find("> label").length){ 
    console.log($(obj).attr('class')); 
    } 
}); 

全例試してみてください:[CSSの親セレクタがありますか?]のhttp://jsfiddle.net/harshakj89/ey00czfn/1/

+0

アイデアは正しいですが、多くのdivで要素をネストしたら失敗します:) – Sherlock

+0

私は答えを編集しました。あなたはそれを確認することができますか? @Sherlock – Harshakj89

関連する問題