0

我正在尝试创建一个场景,在该场景中,我在切换单选按钮时显示不同的内容。它在 chrome 中运行良好,但在 IE 中无法运行。无法弄清楚出了什么问题。

<div id="Q6">
  <input type="radio" id="Q6A" value="yes" name="Q6"/>Same as current address<br/>
  <input type="radio" id="Q6B" value="no" name="Q6"/>New address<br/>
</div>

<div id="Q6Aoutput" style="display:none;">1</div>
<div id="Q6Boutput" style="display:none;">2</div>

<script>
$('#Q6').change(function(){
  if($('#Q6A').attr('checked')){
    $('#Q6Aoutput').show();
  }else{
    $('#Q6Aoutput').hide();
  }
  //
  if($('#Q6B').attr('checked')){
      $('#Q6Boutput').show();
  }else{
      $('#Q6Boutput').hide();
  }
});
</script>
4

4 回答 4

1

尝试更换:

if($('#Q6A').attr('checked')){

和:

if($('#Q6A').prop('checked')){

和:

$('#Q6').change(function(){

您向 div 添加了一个更改事件,虽然它与事件一样有效,但我会使用它来代替:

$('input[name="Q6"]').click(function(){
    $('#Q6Boutput').toggle(this.id == "Q6B");
    $('#Q6Aoutput').toggle(this.id == "Q6A");
});
于 2013-03-04T20:19:01.983 回答
1

你试过 jQuery 的is(:selector)方法吗?此外,最好将事件直接附加到输入收音机。

$('#Q6A').change(function(){
  if($(this).is(':checked')){
    $('#Q6Aoutput').show();
  }else{
    $('#Q6Aoutput').hide();
  }
});
$('#Q6B').change(function(){
  if($(this).is(':checked')){
      $('#Q6Boutput').show();
  }else{
      $('#Q6Boutput').hide();
  }
});
于 2013-03-04T20:19:02.540 回答
0

$('#Q6')选择<div>,而不是<input>

你可以使用$('#Q6 input')

于 2013-03-04T20:18:54.570 回答
0

有一种原生 javascript 方法可以检查它,请参阅这个问题和答案

所以在你的情况下:

if($('#Q6A').checked){
    //etc
}
于 2013-03-04T20:19:20.403 回答