我看到 jQuery 的一个有趣的行为,我不知道为什么,现在它不是一个真正的问题,因为我“修复”了它,但我想和你分享这个,看看代码:
switch(id){
case "1k":
check5k.attr('checked', false);
check10k.attr('checked', false);
check1k.attr('checked', true);
image1k.attr('class', 'radio-checked1k');
image5k.attr('class', 'radio5k');
image10k.attr('class', 'radio10k');
break;
case "5k":
check1k.attr('checked', false);
check10k.attr('checked', false);
check5k.attr('checked', true);
image1k.attr('class', 'radio1k');
image5k.attr('class', 'radio-checked5k');
image10k.attr('class', 'radio10k');
break;
case "10k":
check1k.attr('checked', false);
check5k.attr('checked', false);
check10k.attr('checked', true);
image1k.attr('class', 'radio1k');
image5k.attr('class', 'radio5k');
image10k.attr('class', 'radio-checked10k');
break;
}
所以,它有效,当我尝试时alert($("input:checked").val())
,它会显示当前选择的单选值,但是,如果我这样做:
switch(id){
case "1k":
check1k.attr('checked', true);
check5k.attr('checked', false);
check10k.attr('checked', false);
image1k.attr('class', 'radio-checked1k');
image5k.attr('class', 'radio5k');
image10k.attr('class', 'radio10k');
break;
case "5k":
check1k.attr('checked', false);
check5k.attr('checked', true);
check10k.attr('checked', false);
image1k.attr('class', 'radio1k');
image5k.attr('class', 'radio-checked5k');
image10k.attr('class', 'radio10k');
break;
case "10k":
check1k.attr('checked', false);
check5k.attr('checked', false);
check10k.attr('checked', true);
image1k.attr('class', 'radio1k');
image5k.attr('class', 'radio5k');
image10k.attr('class', 'radio-checked10k');
break;
}
并尝试使其alert($("input:checked").val())
仅显示 10k id 的值,其他显示未定义。10k 显示该值,因为在这种情况下它是最后一个设置为 true 的值。
为什么会这样?