2016-07-25 14 views
0

与えられた要素から他の要素にすべての要素を選択する方法はありますか? 例:jquery get要素から要素へすべて

<div> 
    <div> 
     <a name="break1"></a> 
     <p> belongs to break 1</p> 
     <div> 
      <p> belongs to break 1</p> 
     </div> 
    </div> 
    <p>belongs to break 1</p> 
    <div> 
     <a name="break2"></a> 
     <p> belongs to break 2</p> 
     <div> 
      <p> belongs to break 2</p> 
      <div> 
       <p> belongs to break 2</p> 
      </div> 
     </div> 
    </div> 
</div> 

私たちは、次のようなものが必要:

$('[name*="break1"]').selectAllUntil('[name*="break2"]'); 

と結果は次のようになります。

<p> belongs to break 1</p> 
<div> 
    <p> belongs to break 1</p> 
</div> 
<p>belongs to break 1</p> 

最も重要なこと:各要素の最大の兄弟を見下ろすする必要性セレクタと一致する要素に、親ノードで検索を続ける必要がある場合は、それを見つけられない場合

次の要素が親要素に存在する場合でも、次の要素まですべてを選択する必要があるため、これは誤解を招く可能性があります

+0

これを行う方法はありますが、htmlをより意味のあるものに変更するほうがずっと簡単です。 – adeneo

+0

あなたはもっと具体的になりますか?どの要素を参照していますか? –

+0

https://jsfiddle.net/kt10r6n5/ – adeneo

答えて

1

prevAll()を使用してみてください。

例:

$('.break2').parent().prevAll().css('color', 'blue');

https://jsfiddle.net/kt10r6n5/1/

注:あなたのデモを持っているようにあなたは、クラスを使用している場合は、複数のインスタンスを持っている場合

、これは問題になるかもしれませんその同じクラスのそのクラスの最後のインスタンスを見つける必要があります。もちろんこれはIDの方がうまくいくでしょう。

ドキュメント:私はplunker方法を作成し

http://api.jquery.com/prevall/

+0

ニース、しかし、私たちのために働いていない –

0

https://plnkr.co/edit/XUNCkYMJz4TEekLdBrJM?p=preview

このスクリプトはselector1とselector2間の要素のコレクションでjQueryオブジェクトを返します。

EDIT。さて、私は今に入った!期待どおりに動作するはずです。

重要 - スクリプトはセレクタの親レベルで動作しているため、html構造に依存しています。

jQuery.fn.extend({ 
selectAllUntil: function(selector) { 

    var currentDiv=this.parent("div"); 
    var elements = $();//empty jquery collection 


    while(currentDiv.length){ 


    if (currentDiv.find(selector).length){ 
     //if our element have inside selector then this is end 
     return elements; 

    }else{ 
     //no selector so add 
     elements= elements.add(currentDiv); 
    } 

    //next element 
    currentDiv=currentDiv.next(); 

    } 



    }}); 

//usage: 
$(function(){ 

    var elements=$('[name*="break2"]').selectAllUntil('[name*="break4"]'); 
    elements.css("color","red"); 



}); 
+0

こんにちはmaciej、あなたの答えをありがとう、私たちは、次の(まで)要素がsibilingまたはfrom要素の子孫または子孫であるかどうかわからない –

+0

それはあなたが必要なものではありませんか? –

+0

あなたの答えをありがとうが、私たちは、次の(until)要素がsibilingか、from要素の親または子孫であるかどうかを知りません –

関連する問題