2013-02-11 109 views
0

以下是我的問題:更改值以選擇具有相同名稱的表單的最佳方法是什麼?下面是代碼,我不能改變的HTML stucture:將不同的值分配給多個具有相同名稱的JQuery選擇

<div id="SelectTable"> 
    <div class="SelectClass"> 
     <label class="SelectLabel>Title</label> 
     <div class="SelectOption> 
      <select name="cat[]"> 
       <option value="1">1</option> 
       <option value="2">2</option> 
       <option value="3">3</option> 
      </select> 
     </div> 
    </div> 
    <div class="SelectClass"> 
     <label class="SelectLabel>Title</label> 
     <div class="SelectOption> 
      <select name="cat[]"> 
       <option value="1">1</option> 
       <option value="2">2</option> 
       <option value="3">3</option> 
      </select> 
     </div> 
    </div> 
    <div class="SelectClass"> 
     <label class="SelectLabel>Title</label> 
     <div class="SelectOption> 
      <select name="cat[]"> 
       <option value="1">1</option> 
       <option value="2">2</option> 
       <option value="3">3</option> 
      </select> 
     </div> 
    </div> 
</div> 

什麼是選擇它們分配不同的值(.VAL()),他們每個人的最佳方式?

感謝

+1

是否有替代命名每個選擇相同?這種打敗屬性的目的。 – John 2013-02-11 18:00:24

+0

解釋更多關於你想要達到的目標......舉一個具體的例子。 – Sparky 2013-02-11 18:02:38

+0

感謝您的關注,@ManseUK得到了正確的答案。目的是在選擇一個選項後,通過ajax/jquery逐一加載每個選擇。然後通過post方法傳遞數組。這是一種多選下拉菜單。 – LostSEO 2013-02-11 18:16:03

回答

0

使用eq()查明每個select這樣的:

$('select[name="cat[]"]').eq(0).val(3); // first select 
$('select[name="cat[]"]').eq(1).val(2); // second select 
$('select[name="cat[]"]').eq(2).val(1); // third select 

$('select[name="cat[]"]')返回所有匹配的元素(3中的情況下),那麼.eq()用於

減少匹配元素的到指定指數的那個

Working example here

0
$('select[name^="cat"]').each(function(index,element){ 
//do stuff to each individually. 
element.val(index); //sets the val to the index of the element, which, you know, is useless 
}); 

這應該選擇具有與貓開頭的名稱每個元素(你方括號中的名字後,把我嚇壞了。),然後遍歷他們爲你改變自己的瓦爾斯獨立但是。

+0

我正在尋找分配不同的價值給他們每個人。你的代碼將爲它們中的每一個應用相同的操作。 @ManseUK得到了答案。不管怎麼說,還是要謝謝你。 – LostSEO 2013-02-11 18:25:01

相關問題