2011-04-26 70 views
0

我有這樣的代碼:更新下一個元素

<div class="trackOn" id="line1"> 
    <span class="trackCounter">1</span> 
    <span class="trackTime1"> 
     <select name="hours[]" class="trackInputDate" onChange="updateHours(this.value)" > 
      <option value="1">1</option> 
      <option value="2">2</option> 
      <option value="3">3</option>     
     </select> 
    </span> 
    <span class="trackTime2"></span> 
    <span class="trackTime3"></span> 
</div> 

<div class="trackOn" id="line2"> 
    <span class="trackCounter">2</span> 
    <span class="trackTime1"> 
     <select name="hours[]" class="trackInputDate" onChange="updateHours(this.value)" > 
      <option value="1">1</option> 
      <option value="2">2</option> 
      <option value="3">3</option>     
     </select> 
    </span> 
    <span class="trackTime2"></span> 
    <span class="trackTime3"></span> 
</div> 

<div class="trackOn" id="line3"> 
    <span class="trackCounter">3</span> 
    <span class="trackTime1"> 
     <select name="hours[]" class="trackInputDate" onChange="updateHours(this.value)" > 
      <option value="1">1</option> 
      <option value="2">2</option> 
      <option value="3">3</option>     
     </select> 
    </span> 
    <span class="trackTime2"></span> 
    <span class="trackTime3"></span> 
</div> 

<div class="trackOn" id="line4"> 
    <span class="trackCounter">4</span> 
    <span class="trackTime1"> 
     <select name="hours[]" class="trackInputDate" onChange="updateHours(this.value)" > 
      <option value="1">1</option> 
      <option value="2">2</option> 
      <option value="3">3</option>     
     </select> 
    </span> 
    <span class="trackTime2"></span> 
    <span class="trackTime3"></span> 
</div> 

現在,舉例來說,如果我從#line2選擇值3我想改變下選擇的價值boxex(在#line3#line4上的那些)在3

回答

1

這將是更好的附加事件處理程序使用jQuery:

$('.trackInputDate').change(function() { 
    updateHours($(this).val()); // or was `updateHours` supposed to be the 
           // function that should handler the update? 
    $(this).closest('.trackOn') 
     .nextAll('.trackOn') 
     .find('.trackInputDate').val($(this).val()); 
}); 

參考:.closest.nextAll.find


的DOM必須完全解析之前,您可以附加的事件處理程序。因此,要麼把代碼中ready()事件處理程序:

$(function() { 
    // code here 
}); 

或把它在頁面的底部。

+0

是的updateHours()是fucntion,但我可以避免它,並使用此事件處理程序......好多了:)無論如何,我得到這個錯誤對象#<一個HTMLSelectElement>沒有方法'VAL'' – markzzz 2011-04-26 14:11:49

+0

I目前有問題連接到jsfiddle.net,但我會盡快提供演示。 – 2011-04-26 14:12:22

+0

@markzzz:這是一個錯字,我在'(this)'前面忘了'$'。固定。 – 2011-04-26 14:13:12