jQuery自动触发复选框事件

时间:2013-10-17 07:59:03

标签: javascript javascript-events jquery


我想要手动触发事件,而不是jQuery本身 这里更好地理解我的问题:

$('.commonCheck').change(function () {
            if ($(".cashierCheck").attr("checked")) {
                $('.cashierInput').fadeIn();
                console.log("________________hr")
            }
            else{
                $('.cashierInput').fadeOut();
                console.log("_______________uncjecked")
            }
}

我的复选框:

<input type="checkbox" name="cashierFilter" id="cashierFilter" class="cashierCheck commonCheck" class="mrL0" />

当我手动选中/取消选中复选框时,触发更改事件没有任何问题。 但我希望在我以某种方式执行此事件时发生事件:

$('#cashierFilter').prop('checked','true');

2 个答案:

答案 0 :(得分:2)

演示 http://jsfiddle.net/ga9nn/

您可以使用trigger以编程方式触发事件:

$('#cashierFilter').prop('checked', true).trigger('change');

此外,您应该使用is来检查元素的属性,并且可以在变量中缓存选择器以提高性能:

$('.commonCheck').change(function () {
    var $cashierCheck = $(".cashierCheck");
    if ($cashierCheck.is(":checked")) {
        $cashierCheck.fadeIn();
        console.log("________________hr")
    }
    else {
        $cashierCheck.fadeOut();
        console.log("_______________uncjecked")
    }
}

答案 1 :(得分:2)

在jquery中使用“is”是最佳解决方案:

$('.commonCheck').change(function () {
    if ($(".cashierCheck").is(":checked")) {
                $('.cashierInput').fadeIn();
                console.log("________________hr")
            }
            else{
                $('.cashierInput').fadeOut();
                console.log("_______________uncjecked")
            }
});

http://jsfiddle.net/PpcLe/