首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与.closest() .siblings() .find()混淆

与.closest() .siblings() .find()混淆
EN

Stack Overflow用户
提问于 2012-08-11 06:47:53
回答 3查看 3.7K关注 0票数 2

我有这样的代码:

代码语言:javascript
复制
<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的原因):

代码语言:javascript
复制
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()

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-11 06:55:38

input[name=srv]不是.food的兄弟。另外,对于遍历jQuery对象,我建议使用.each

代码语言:javascript
复制
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);
});
票数 3
EN

Stack Overflow用户

发布于 2012-08-11 06:53:19

代码语言:javascript
复制
food.closest('#wrapf').find('input[name=srv]').val()

应该行得通

票数 2
EN

Stack Overflow用户

发布于 2012-08-11 06:56:38

id不是唯一的吗?那么,这不应该是可行的吗?

代码语言:javascript
复制
$("#srv").val()

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

代码语言:javascript
复制
var v = food.eq(i).find('option:selected').val();

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

代码语言:javascript
复制
var v = food.eq(i).val();

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11910203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档