2011-08-12 14 views
1

だから私は、次の構造を持っている:IDを持つ兄弟を取得

<div id="some id"> 
    <div> 
      <input id="some other id" ....> 
      .....bunch of other inputs with no id field.... 
      <select onclick="findSiblingWithId()">    
    </div> 
    <div> 
      <input id="some other id" ....> 
      .....bunch of other inputs with no id field.... 
      <select onclick="findSiblingWithId()">    
    </div> 
    <div> 
      <input id="some other id" ....> 
      .....bunch of other inputs with no id field.... 
      <select onclick="findSiblingWithId()">    
    </div> 

は、だから私のfindSiblingWithIdに私は私が探しているIDを知らないが、私が知っているすべてがあるという点で、他のコンポーネントについて同じdivには、IDが1つしかありません。どうすれば入手できますか?

編集: 私は十分に説明しなかったようですので、私はもっと情報を追加しようとします。例えば、selectコンポーネントが変更されたとき(ここではボタンや何か、それは問題ではありません)、同じdivから対応する<input id="some other id" ..>を取得したいとします。

私は上記の説明をしようとしましたが、<div id="some id">という1つの巨大なdivがあります。これには、IDなしの<div>という小さな番号が含まれています。

これらのより小さいdivのそれぞれは、IDのない入力フィールドとIDのないその他の入力フィールドを持ちます。今すぐアクションで、ボタンをクリックするかどうかは関係ありません(同じ仕事が兄弟になると思った)同じdivにあるコンポーネントから、ID属性を持つ入力を見つける方法があります?

よろしく、 はBogdan

+0

er?あなたはこの機能を使って何を得たいですか?コードを表示できますか? – SergeS

+0

次の入力フィールド、または次のdivを取得しますか?どちらも、すべての兄弟を通るループ、または単純なindexOf検索でも可能です。 –

+0

ここにあなたが探しているものだけの記事があります... http://stackoverflow.com/questions/842336/is-there-a-way-to-select-sibling-nodes –

答えて

3

あなたは親のすべての子を反復することができます:

function findSiblingWithId(element) { 
    var siblings = element.parentNode.children, 
     sibWithId = null; 
    for(var i = siblings.length; i--;) { 
     if(siblings[i].id) { 
      sibWithId = siblings[i]; 
      break; 
     } 
    } 

    if(sibWithId) [ 
     // found it 
    } 
}; 

あなたは(私はあなたが適切なselectフィールドを持っていることを望みます)クリックされた要素を渡す必要があります。

<select onclick="findSiblingWithId(this)">  

は、ユーザーが値を選択したときに、それがトリガーしたい場合は、changeイベントのイベントハンドラをアタッチすることを検討してください。

+0

ありがとう、このようなものは私のために働いた。 – Bogdan

0

再帰的親DIVを反復とIDのjQueryを使用し

0
function findSiblingWithId(element) { 
var sibling = null; 

if (element.parentNode != null) { 
    sibling = element.parentNode.nextSibling; 
    // Then go through the child elements of your sibling node and get the one with an id 
} 

}

+0

これは親の次の兄弟。 –

+0

はい、その後、彼は行くことができ、そのIDで入力を見つけることができます – Dorpsidioot

0

を有する入力を分離するためのロジックを追加します。

<!--Modify HTML so input is --> 
<select onclick="findSiblingWithId(this)"> 

findSiblingWithId(elem){ 
    return $(elem).siblings("[id]"); //if you need all 
    //return $(elem).siblings("[id]:eq(0)"); //if you need only first 
} 
関連する問題