2009-07-07 20 views
5

JQueryを使用して、その要素の1つのIDを使用して要素にアクセスしようとしています。たとえば、ネストされた「searchBox」要素から「myDiv」を検索する必要があります。問題は、階層が変更され、searchBoxが常に同じネストされた位置にあるとは限りません。だから私は本質的に何かを言う必要があります: 'searchBox'のIDを持つ要素を含むDIVを与えてください(下記参照)任意の提案ですか? ありがとう!JQuery - ネストされた要素IDから親divを取得する

<div id="myDiv" class="CommonGridView_ListBoxPopupPanel"> 
Some text here : 
<table><tbody><tr><td><input class="tboxw" type="text" id="btnFind"/></td> 
<td>some content</td> </tr> 
<tr> <td><textarea id="searchBox">text area content</textarea> </td> 
</tr> 
</tbody> 
</table> 
<table><tr><td></td></tr></table> 
</div> 

答えて

10

あなたはこのjQueryのセレクタをお勧めします:

$("#searchBox").closest("div"); 

C losest([selector]) functionラッピング要素がありますが、そのセレクタに一致します。

が-N2をクリックして-N1のテキスト値を見つける!!:

+0

"最も近い([セレクタ])関数は、セレクタに一致するすべてのラッピング要素を検出します。 - いいえ、それは最も近いものだけを見つけるでしょう。一番近い要素は> 1要素を返しません。 –

+0

清算パオロありがとう - 私は私の答えに最も近いと誤解されました。 –

+0

それは大丈夫です、私は実際にミスを犯しました。最も近いものは、$(セレクタ)の部分が1つ以上の要素を返した場合に1を返します(それぞれセレクタ要素の最も近いものを返します)。 –

6
$('#searchBox').parents('#myDiv') 
+0

-1 parent()は機能しません。 – Wayne

+0

両親(通知 's') – CMS

+0

0悪いです。私は "s"を忘れていたに違いない。 – Wayne

0

あなたはこれを使用することができます:

var searchBox = $('#searchBox'); 

// Have the searchBox jQuery object, so find the ancestors that match a specific selector. 
var parentDiv = searchBox.parents('div#myDiv'); 

完全なドキュメントはavailable hereです。

+0

btw、nodeName#idを使用するとidを指定するよりも遅くなります – redsquare

+0

:実際はそうではありませんが、jQueryはこの間違いを許すように最適化されており、IDのみを検索します。 (私はこれについてJohn Resigに尋ねました) –

+0

私はそれを自分でテストし、それがあなたであることを保証することができます。私が仕事に行くときにデモを行います。 – redsquare

2

あなたがIDを知っていて、IDを覚えているのならば、あなたは普通のように の要素をつかんでください。

​​

は、getElementByIdをを使用するのではなく、それらのすべての階層で親とフィルタを取得するようちょうど遅いようにshow上記の答えとして.parentsを使用してからもメリットがありません。 たとえば、classNameだけが分かっている場合は、.closest('div.class')を使用することをお勧めします。

searchBoxが実際に要素の親であることを確認したい場合は、.closestを使用する唯一の方法です。あなたは(関係なく、そのDIVのIDの)ラッピングDIV要素を検索したい場合は

if ($element.closest('#searchBox').length){ 
    //do something 
} 
+0

+1正しい情報を指しています。 :) –

+0

タグ#idのものについてJohn Resigに再度尋ねたところ、彼は期待通りに動作すると言いました。なぜなら、nodeNameもチェックする必要があるからです。理論的には、#myidとdiv#myid(同時にではありません)というスパンを理論的に行うことができるようになります。私は彼を信じる傾向があるので、彼はそれがいいと言います。 –

+0

しかし、DIVのIDがわからない場合は、子要素のみが表示されますか? – 29er

1

あなたは

$('#searchBox').parents('div:first') 

または

$('#searchBox').parents('div:eq(0)') 
0

複雑なネストされた例を使用することができますか?

ソリューション:

<ul class="ul-N1"> 
     <li class="li-N1"> 
      <a class="a-N1"></a> 
      <ul class="ul-N2"> 
       <li class="li-N2"> 
        <a class="a-N2"> </a> 
       </li> 
      </ul> 
     </li> 
    </ul> 

のjQuery:

VAR-N1 = $(この)(」UL-N1に.Li-N1。 ").closestを見つける("-N1。 ")。テキスト();

関連する問題