2013-02-11 95 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

相关问题