可能重复:
How do I prevent default checkbox event from overriding my jQuery check/uncheck function?
我已经想出了当用户选中复选框时如何触发事件。但是,如果他们取消选中相同的复选框,我想触发一个事件。基本上,我希望能够检查复选框,触发事件,然后如果我取消选中相同的复选框,它应该触发另一个事件。我希望能够检查它,然后立即取消选中它并让它触发另一个事件。这是我的代码:
$('#myID').click(function() {
var isChecked = $('#myID').is(':checked');
if(isChecked)
{
$('#myField').replaceWith('Something');
}
else
{
$('#myField').replaceWith('Something Else');
}
});
答案 0 :(得分:1)
$('#myID').click(function() {
var isChecked = this.checked; // this.checked is enough or $(this).is(':checked')
if(isChecked) {
$('#myField').replaceWith('Something');
} else {
$('#myField').replaceWith('Something Else');
}
});
注意:有人应该记住,当一个人使用$('#myField').replaceWith()
时,#myField
将从DOM中删除,所以下次你无法抓住它下一个replaceWith()
将失败。
<强> DEMO 强>
答案 1 :(得分:0)
您可以将检查事件标记为带有类
的复选框$('#myID').click(function() {
var isChecked = $(this).is(':checked');
var alreadyChecked = $(this).has('checked');
if(alreadyChecked)
{
//fire appropriate event
}
if(isChecked)
{
$('#myField').replaceWith('Something');
$(this).addClass('checked');
}
else
{
$('#myField').replaceWith('Something Else');
}
});
如果在开始时检查,则第一次点击将取消选中,第二次将检查,第三次将触发事件 如果在开始时未选中,则首先单击将检查,第二个将触发事件
答案 2 :(得分:0)
$('#myID').on('change', function() {
var something = this.checked ? 'Something' : 'Something Else';
$('#myField').replaceWith(something);
});
问题在于您要替换整个#myField
元素,因此下次运行该函数时,没有元素#myfield
,并且它不起作用。
请尝试更换内容,html()
,append()
,prepend()
或其他任何不删除整个#myField
元素的内容:
<div id="myField">Something</div>
-
$('#myID').on('change', function() {
var something = this.checked ? 'Something' : 'Something Else';
$('#myField').text(something);
});
答案 3 :(得分:0)
我认为你正在寻找jquery的触发事件,所以使用
<script>
$('#btn1').trigger('click');
$('#btn1').click(function(){
// do something
});
</script>