单选按钮单击事件

时间:2015-06-07 16:04:07

标签: javascript jquery html

在我的代码中,我想创建一个包含3个可能答案的问题。用户点击其中一个。然后问题就消失了。我的问题是,在用户点击它之前,问题会在加载时消失 PS:我是编程和JavaScript的新手,所以请尽量愚弄你的答案。
提前谢谢你。 :)



$("input:radio").attr("checked", false);

function disappear(a) {
  $("#q" + a).fadeOut(1500);
}

$(".choice1").click(disappear(1));

<form id="q1">
  58*2=
  <br>
  <input type="radio" class="choice1" name="a1" value="1" />128
  <input type="radio" class="choice1" id="r1" name="a1" value="2" />116
  <input type="radio" class="choice1" name="a1" value="3" />126
</form>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
&#13;
&#13;
&#13;

5 个答案:

答案 0 :(得分:2)

问题在于您的点击处理程序。

=query()

以上在加载时调用函数$(".choice1").click(disappear(1)); ,因为您没有将函数的引用作为回调传递。

为处理程序

编写有效的匿名回调
disappear

作为旁注,您可以在下面的处理程序中传递函数引用,因为它是无参数的。否则,您需要一个匿名的func wrap,如上所述。

$(".choice1").click(function(){
    disappear(1)
});

答案 1 :(得分:1)

您实际上是在触发click事件,而不是创建事件处理程序。

finishTransaction:

触发click事件,不会将其绑定到类。

这是你将点击绑定到一个类的方法: -

$(".choice1").click(disappear(1));

答案 2 :(得分:1)

您应该使用&#39;更改&#39;事件,因为它只会在单选按钮更改时触发

&#13;
&#13;
$("input:radio").attr("checked", false);

function disappear(a) {
  $("#q" + a).fadeOut(1500);
}

$(".choice1").on('change', function(){
  disappear(1);
});
&#13;
<form id="q1">
  58*2=
  <br>
  <input type="radio" class="choice1" name="a1" value="1" />128
  <input type="radio" class="choice1" id="r1" name="a1" value="2" />116
  <input type="radio" class="choice1" name="a1" value="3" />126
</form>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
&#13;
&#13;
&#13;

答案 3 :(得分:1)

或者,因为会有很多问题,你可以做到

$("input:radio").attr("checked", false)
                .click(function(){$(this).parent('form').fadeOut(1500);})

少写,多做......,见这里:http://jsfiddle.net/wm9gdr2n/1/

点击功能将找到需要使用<form>淡化的相关parent()。如果您的复选框已打包到<div>中的某些<form>,则必须使用parents(),因为parent()只会找到直接 parent(然后是<div>)。

这样你就不会

$(".choice1").click(function(){disappear(1)});
$(".choice2").click(function(){disappear(2)});
$(".choice3").click(function(){disappear(3)});
...

每个问题。而且disappear(a)已经过时了。

(如果页面上有复选框, 希望此机制发生,则可能必须向选择器添加更多详细信息。)

答案 4 :(得分:1)

您已触发click事件而非定义回调。您需要的可能方式是:

&#13;
&#13;
$("input:radio").attr("checked", false);

$(".choice1").click(function() {
   var me = $(this), index = me.attr('name').substring(1); 
   $('#q' + index).fadeOut(1500);
   
});
&#13;
<form id="q1">
  58*2=
  <br />
  <input type="radio" class="choice1" name="a1" value="1" />128
  <input type="radio" class="choice1" id="r1" name="a1" value="2" />116
  <input type="radio" class="choice1" name="a1" value="3" />126
</form>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
&#13;
&#13;
&#13;

上述代码的主要变化是从&#34; name&#34;中读取索引。的收音机盒子。这是为了避免传递索引,如&#34; 1&#34;来自论点。