在我的代码中,我想创建一个包含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;
答案 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;事件,因为它只会在单选按钮更改时触发
$("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;
答案 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事件而非定义回调。您需要的可能方式是:
$("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;
上述代码的主要变化是从&#34; name&#34;中读取索引。的收音机盒子。这是为了避免传递索引,如&#34; 1&#34;来自论点。