2

我有这个代码:

<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输入中获取值,我该怎么做?

附言。我也试过.find()

4

3 回答 3

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);
});
于 2012-08-10T22:55:38.440 回答
2
food.closest('#wrapf').find('input[name=srv]').val()

应该管用

于 2012-08-10T22:53:18.793 回答
1

id 不是唯一的吗?这不应该工作吗?

$("#srv").val()

顺便说一句,你不需要这样做:

var v = food.eq(i).find('option:selected').val();

你可以这样做(如果你有多种食物):

var v = food.eq(i).val();

val()已经为您提供了当前选择的值。

于 2012-08-10T22:56:38.193 回答