0

可能重复:
如何防止默认复选框事件覆盖我的 jQuery 选中/取消选中函数?

我已经知道如何在用户选中复选框时触发事件。但是,如果他们取消选中同一个复选框,我想触发一个事件。基本上,我希望能够选中复选框,触发一个事件,然后如果我取消选中同一个复选框,它应该触发另一个事件。我希望能够检查它,然后立即取消选中它并让它触发另一个事件。这是我的代码:

$('#myID').click(function() {

    var isChecked = $('#myID').is(':checked');

    if(isChecked)
    {
        $('#myField').replaceWith('Something');
    }
    else
    {
        $('#myField').replaceWith('Something Else');
    }
});
4

4 回答 4

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');
    }
});

注意:一个想法应该记住,当一个 use $('#myField').replaceWith(), then#myField将从 DOM 中删除,所以下一次你不能抓住它, nextreplaceWith()会失败。

演示

于 2012-05-17T17:37:30.757 回答
0

我认为您正在寻找 jquery 的触发事件,因此请使用

<script>
        $('#btn1').trigger('click');


        $('#btn1').click(function(){
            // do something
        });
</script>
于 2012-05-17T18:04:11.353 回答
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');
    }

});

如果在开始时选中第一次单击将取消选中,第二次将检查,第三次将触发事件 如果在开始时未选中第一次单击将检查,第二次将触发事件

于 2012-05-17T17:37:43.743 回答
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);
});​

小提琴

于 2012-05-17T17:47:33.940 回答