2010-07-01 45 views
3

我使用jQuery 1.3版本父> jQuery的孩子符號1.3

<div id='mainPanel'> 
    <div> 
    <h3>Head #1 <a href="#"><input type="text" value="Type 1"/> </a></h3> 

    <div> 
     <div id="panel_1"> 
      <div class="items"> 
      <div><input type='text' value="0"/></div> 
      <div><input type='text' value="1"/></div> 
      <div><input type='text' value="2"/></div> 
      <div><input type='text' value="3"/></div> 
     </div> 
     </div> 
    </div> 

    <div> 
    <h3>Head #2 <a href="#"><input type="text" value="Type 2"/> </a></h3> 
    <div> 
     <div id="panel_2"> 
      <div class="items"> 
      <div><input type='text' value="0"/></div> 
      <div><input type='text' value="1"/></div> 
      <div><input type='text' value="2"/></div> 
      <div><input type='text' value="3"/></div> 
     </div> 
     </div> 
    </div> 

    <div> 
</div> 

現在,在這裏,我想從頭部DIV訪問文本框的值,需要一個ID,即panel_1和panel_2

所以這樣做,我寫下下面的代碼

$("#mainPanel > div > h3").each(function(index) { 

     var panelId = $(this).attr('id'); // i.e. panel_1 and all 

     // parent > child notation 
     var ele = $(this).next('div > div > div > div').each(function(index){ 


      alert($(this).children('input').val()); 


}); 

}); 

我在這裏沒使用父母得到的結果>子符號

如何訪問H3> A>輸入的位置

+0

究竟失敗了什麼?第一次或第二次電話? – 2010-07-01 13:38:34

+1

它可能是一個錯字,但是你的mainPanel作爲你的標記中的一個類,並且將它作爲一個id引用。 – 2010-07-01 13:39:49

回答

4

價值<h3>元素完全不包含任何<div>元素,讓第一選擇會誤事。真的沒有必要這麼複雜:

$('#panel_1 input').each(function() { ... 

將得到你在「panel_1」中的所有輸入元素。

編輯 —一種替代,現在我明白你的意思的,「我需要一個id」:

$('div.mainPanel div.items').each(function() { 
    var containerId = $(this).closest('div[id]').attr('id'); 
    $(this).find('input').each(function() { 
    var anInput = $(this); 
    // ... 
    }); 
}); 

依託剛性容器結構似乎是長期問題的良方。這就是爲什麼「class」和「id」值非常有用 - 確切的標記結構可以改變,但靈活的代碼可以繼續工作。

+0

但問題是#panel_1可能會因爲此塊逐漸增加而不同,這就是爲什麼我要爬到元素 – Hunt 2010-07-01 13:41:51

0

我已經取代

$(this).next('div > div > div > div').each(function(index) 

與以下

$(this).next('div').find('div > div > div >input').each(function(index) 
0

所以,你將得到一個ID,並需要找到包含在其面板中的投入?

$('#panel_' + givenId + ' input').each(function() { ... 

或者你通過所有的面板需要週期,並獲得投入?