我有这段代码:
<div id="wrapf">
<div class="dropsf">
<select name="f" class="food">
<option value="" rel="">Choose!</option>
<option value="1" rel="2">1</option>
<option value="3" rel="6">2</option>
<option value="7" rel="14">3</option>
</select>
</div>
<div class="serve">
<button id="plus">+</button>
<input id="srv" name="srv" class="srv" type="text" value="1" size="2" readonly="readonly"/>
<button id="minus">-</button>
</div>
</div><!-- #wrapf -->
我在上面的代码中添加了一些<div>
之前有了这段代码(出于对齐和CSS的原因):
var food = $(".food"),
cc = [],
gc = [];
//Push values into an array.
for(var i = 0; i < food.length; i++) {
var v = food.eq(i).find('option:selected').val();
var m = food.eq(i).siblings('input[name=srv]').val();
gc.push(food.eq(i).find('option:selected').attr('rel'));
cc.push(v * m);
}
但是现在我的javascript无法运行,而且我对如何从下拉列表中获取值感到困惑...(我追加每一个下拉,这就是我使用for
语句的原因),我的v
变量很好,gc.push
语句正常,但我的m
变量没有注册。我正在尝试从serving
输入中获取值,我该怎么做?
PS。我也试过.find()
答案 0 :(得分:3)
input[name=srv]
不是.food
的兄弟姐妹。另外,为了循环jQuery对象,我建议使用.each
。
var food = $(".food"),
cc = [],
gc = [];
food.each(function(){
var $this = $(this),
// you can just get the val of the select
val = $this.val(),
// this is the same as $(this).find('option:selected')
option = $('option:selected', this),
// or even simpler: $('#srv').val();
inputVal = $this.parent('.dropsf').siblings('.serve').find('input[name=srv]').val();
gc.push(option.attr('rel'));
cc.push(val * inputVal);
});
答案 1 :(得分:2)
food.closest('#wrapf').find('input[name=srv]').val()
应该有效
答案 2 :(得分:1)
ID不唯一吗?那不应该这样吗?
$("#srv").val()
顺便说一下,你不需要这样做:
var v = food.eq(i).find('option:selected').val();
你可以这样做(如果你有多种食物):
var v = food.eq(i).val();
val()
已为您提供当前选定的值。