我想在单击时切换单选按钮,但它始终返回true,并且未被选中。我想在选中广播时调用一个函数,而在未选中时运行另一个函数,该怎么办?
$('input[type="radio"]').click(function() {
console.log($(this).is(':checked'))
if ($(this).is(':checked')) {
$(this).attr('checked', false)
} else {
$(this).attr('checked', true)
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="radio" name="ch"/>
<input type="radio" name="ch"/>
答案 0 :(得分:4)
不,您不能那样做,您应该首先检测是否已检查,我使用了变量checked
function f1() {
console.log('run 1st func!')
}
function f2() {
console.log('run 2nd func!')
}
let checked = true
$('input:radio').click(function() {
let bu = $(this);
checked = !checked
checked ? bu.prop('checked', !this.checked) + f1() :
bu.prop('checked', this.checked) + f2()
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="radio" />
答案 1 :(得分:2)
您可以将.prop()
与isChecked
变量结合使用来实现它。
var isChecked = false;
$('input[type="radio"]').click(function() {
$(this).prop('checked', !isChecked);
isChecked = !isChecked;
if(isChecked) f1();
else f2();
});
var f1 = function(){
console.log("F1");
};
var f2 = function(){
console.log("F2");
};
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="radio" />
已更新
您还可以像这样使用2个单选按钮
$('input[type="radio"]').click(function() {
var value = $(this).filter(":checked").val();
if(value === 'f1')
f1();
else
f2();
});
var f1 = function(){
console.log("F1");
};
var f2 = function(){
console.log("F2");
};
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="radio" name="my_radio" value="f1" /> <label>F1</label>
<input type="radio" name="my_radio" value="f2" /> <label>F2</label>