当重复选中/取消选中复选框时,如何使用jQuery触发事件?

时间:2012-05-17 17:33:46

标签: jquery

  

可能重复:
  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');
    }
});

4 个答案:

答案 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);
});​

FIDDLE

答案 3 :(得分:0)

我认为你正在寻找jquery的触发事件,所以使用

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


        $('#btn1').click(function(){
            // do something
        });
</script>