jQuery问题:已检查的兄弟姐妹

时间:2011-07-07 04:11:48

标签: javascript jquery

我正在尝试编写一个jQuery函数,在单击单选按钮时更改小计。将有3个以上的单选按钮 - 每个按钮具有不同的价格值,将添加到现有的小计。

如果没有选择现有的单选按钮(这组单选按钮 - 具有相同的name属性),希望更新小计。这就是我目前所拥有的:

HTML:

<input type="radio" value="45" name="timescale" onclick="changePrice(this)">

jQuery的:

function changePrice(t){
  v = parseInt($(t).val());
  s = $("#subtotal");      
  x = parseInt(s.text());
  if($(t).siblings("input").is(":checked")){
    s.text(x);
  } else {
    s.text(x + v);
  }
}

我希望if语句检查是否选中了单选按钮的兄弟节点。如果是:仅将小计s.html()替换为其当前值。如果不是:用更新的值(即当前值+单选按钮的值)替换s.html()。但目前每次点击都会更新小计 - 即使已经选择了其他单选按钮。我哪里错了?

1 个答案:

答案 0 :(得分:1)

修改 问题是change事件的那一刻,已经有一个已检查的无线电(你不知道以前的状态)。您可以将此状态存储在辅助变量中,如下所示:

var $checked; //This is the aux var that saves previous state
$(document).ready(function(){
   $checked = $(":radio[name='timescale']:checked");
});

function changePrice(t){
  v = parseInt($(t).val());
  s = $("#subtotal");      
  x = parseInt(s.text());  
  if($checked.size() > 0){
    s.text(x);
  } else {
    s.text(x + v);
  }
  $checked = $(this);
}

希望这会有所帮助。干杯