使用JQuery为具有相同名称的多个select分配不同的值

时间:2013-02-11 17:57:00

标签: jquery select

这是我关心的问题,更改值以选择具有相同名称的表单的最佳方法是什么。这是代码,我不能改变html结构:

<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())的最佳方法是什么?

由于

2 个答案:

答案 0 :(得分: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
});

那应该选择名称以cat开头的每个元素(名字吓到我之后的方括号),然后遍历它们,然后单独更改它们的val。

答案 1 :(得分: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