<select class="qty">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>
<select class="qty">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>
我有2个select
标签,我想用数组更新它们。这意味着将所选内容更改为正确的值,但为什么我在下面的尝试中:eq()
无法使用我的循环?
selectedArr = [2,3];
$.each(selectedArr,function(i,obj){
console.log(obj);
$('.qty:eq(' + i + ')').prop('selected', true);
});
答案 0 :(得分:3)
需要空间它是后代选择器
$('.qty option:eq('+i+')').prop('selected',true);
答案 1 :(得分:3)
因为您尝试修改selected
元素的select
属性。您应该选择目标option
子项,然后修改selected
属性。 HTMLSelectElement
对象没有selected
属性。
以下代码段首先根据当前迭代的索引选择目标选择元素,然后选择目标选项元素:
$.each(selectedArr, function (i, obj) {
$('.qty:eq(' + i + ') option:eq('+ obj +')').prop('selected', true);
});
另一种选择是使用val
方法:
$.each(selectedArr, function (i, obj) {
$('.qty:eq(' + i + ')').val(obj);
});
答案 2 :(得分:3)
这里有一些问题:
$('.qty:eq('+i+')').prop('selected',true)
仅在selected
元素上设置<select>
属性 - 不 <option>
元素selectedArr
我会做这样的事情:
var selectedArr = [2, 3];
$.each(selectedArr, function(i, obj) {
$('.qty:eq(' + i + ')').val(obj);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="qty">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>
<select class="qty">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>
答案 3 :(得分:1)
<强> DEMO 强>
由于您没有选项中的值属性,我认为这正是您所寻找的。 p>
selectedArr = [2, 3];
$.each(selectedArr, function (i, obj) {
console.log(obj + '' + i );
$('.qty:eq(' + i + ') option:eq(' + obj + ')').prop('selected', true);
});
答案 4 :(得分:0)
您可能想尝试一下:
selectedArr = [2,3];
$.each(selectedArr,function(i,obj){
console.log(obj);
$('.qty option').eq(i).prop('selected',true);
});
答案 5 :(得分:0)
你可以试试这个:
https://jsfiddle.net/4wfeqd2z/
selectedArr = [2,3];
$.each(selectedArr,function(i,obj){
console.log(obj);
$('.qty').each(function() {
$(this).find('option:eq('+obj+')').prop('selected',true);
});
});