2016-07-04 10 views
1

jQueryで親セレクタがどのように機能するかを知ることはできません。スパンの周囲に境界線を取得する方法jQuery - 親セレクタ

var test = $("p:contains('Lorem ipsum dolor sit amet')").parentsUntil("span"); 
 
    
 
    
 
    test.css({ "border" : "1px solid red"});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    \t \t \t <p>Title</p> 
 
    \t \t \t <span> 
 
    \t \t \t \t <p>Span</p> 
 
    \t \t \t \t <div> 
 
    \t \t \t \t \t <p>Div</p> 
 
    \t \t \t \t \t <p>Lorem ipsum dolor sit amet</p> 
 
    \t \t \t \t </div> 
 
    \t \t \t </span> 
 
    \t \t \t <tr> 
 
    \t \t \t \t <th>Xx</th> 
 
    \t \t \t \t <td>YY</td> 
 
    \t \t \t </tr> 
 
    \t \t </table>

?私のコードは動作しません。

+0

です。私はあなたが望むものを理解できません。またあなたのhtmlは無効です。 – Mohammad

+0

あなたのHTMLは無効です。 jQueryを操作する前にこれを修正する必要があります – j08691

+0

'parentsUntil(" span ")'の代わりに '.closest(" span ")'を使用してください。 –

答えて

0

あなただけ(.closestを使用する必要がある)の代わりに、.parentと一緒に():

var test = $("p:contains('Lorem ipsum dolor sit amet')").parent().closest("span"); 

UPDATE

あなたはまた、(parentsUntilを()を使用し続けるが、親を追加することができます)

parentUntilは現在の要素を除外するため、直接親のタイプが「span」の場合は動作しません。

+0

.closest( "span")を.closest( "table")に変更すると、なぜ再び動作しないのですか? –

+0

@Karolina Tichaあなたのテーブルは無効です(または少なくともChrome 51.0.2704.103によれば無効です)。パラグラフとスパンは、と​​タグで囲む必要があります。それ以外の場合は、自動的にテーブルから取り出され、あたかも

というタグがあたかもあたかもその通りです。 –

0

ドキュメント.parentsUntil()によると(それを除く)現在の要素とセレクタ親の間ですべての親を選択します

  • セレクタタイプ:どこに示すために、セレクタ式を含む文字列をセレクタ祖先要素の一致を停止します。

  • フィルタタイプ:セレクタ要素と一致するセレクタ式を含む文字列。あなたが必要なもの

は、あなたの質問はuncleadあるだけ.parents('span')

var test = $("p:contains('Lorem ipsum dolor sit amet')").parents("span"); 
 
    
 
    
 
    test.css({ "border" : "1px solid red", "display":"block"});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    \t \t \t <p>Title</p> 
 
    \t \t \t <span> 
 
    \t \t \t \t <p>Span</p> 
 
    \t \t \t \t <div> 
 
    \t \t \t \t \t <p>Div</p> 
 
    \t \t \t \t \t <p>Lorem ipsum dolor sit amet</p> 
 
    \t \t \t \t </div> 
 
    \t \t \t </span> 
 
    \t \t \t <tr> 
 
    \t \t \t \t <th>Xx</th> 
 
    \t \t \t \t <td>YY</td> 
 
    \t \t \t </tr> 
 
    \t \t </table>