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ますが、どうすればよいですか?

ps。私も試しました.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 に答える