Jquery 引导:选中label.btn内的复选框时,更改事件不起作用。

Jquery 引导:选中label.btn内的复选框时,更改事件不起作用。,jquery,html,twitter-bootstrap-3,Jquery,Html,Twitter Bootstrap 3,我有Bootstrap v3.3,我有以下复选框es样式为按钮: <div class="btn-group transactionSheetToolbarStatusToggle" data-toggle="buttons"> <label class="transactionSheetToolbarShowDraft btn btn-default active"> <input type=

我有Bootstrap v3.3,我有以下
复选框
es样式为按钮:

        <div class="btn-group transactionSheetToolbarStatusToggle" data-toggle="buttons">
            <label class="transactionSheetToolbarShowDraft btn btn-default active">
                <input type="checkbox" autocomplete="off" checked="checked">Draft
            </label>
            <label class="transactionSheetToolbarShowFinalised btn btn-default active">
                <input type="checkbox" autocomplete="off" checked="checked">Finalised
            </label>
            <label class="transactionSheetToolbarShowVoid btn btn-default">
                <input type="checkbox" autocomplete="off">Voided
            </label>
        </div>
但似乎事件并没有被触发

我也尝试过:

$('.transactionSheetToolbarShowDraft input[type="checkbox"]').click(function() {...});
但是,这一事件似乎并没有被触发。 那么我有这个,

$('.transactionSheetToolbarShowDraft').click(function() {...});
事件被触发了,但似乎有什么不对劲。。。 当我试图获取
复选框的
:选中状态时出现问题

$('.transactionSheetToolbarShowDraft').click(function() {
    var checkbox = $(this).find('input[type="checkbox"]');
    if (checkbox.is(':checked')) {
        console.log('is checked!');
    } else {
        console.log('not checked...');
    }
});
:checked
状态似乎相反!我做了一些调试并跟踪了问题。这背后的原因是,单击了
标签
,并触发了其
单击
事件,
复选框
尚未更新。基本上,
change
事件处理程序是在
复选框更新其选中状态之前调用的。
迫不得已,我想出了以下方法:

$('.transactionSheetToolbarShowDraft').click(function() {
    var checkbox = $(this).find('input[type="checkbox"]');
    setTimeout(function() {
        if (checkbox.is(':checked')) {
            console.log('is checked!');
        } else {
            console.log('not checked...');
        }
    }, 10);
});
这似乎有效。。。除了使用
setTimeout
calll来处理事件之外,这绝对不是一个好的做法


所以我只是想看看是否有人有更好的解决办法?还是我做错了什么

这将触发选中/未选中事件

$('.transactionSheetToolbarShowDraft')。在('click','input',function()上{
var checkStatus=($('input').prop('checked'))?'is checked!':'notchecked…';
console.log(检查状态);
});

草稿
最终确定
无效

这将触发选中/未选中事件

$('.transactionSheetToolbarShowDraft')。在('click','input',function()上{
var checkStatus=($('input').prop('checked'))?'is checked!':'notchecked…';
console.log(检查状态);
});

草稿
最终确定
无效

您的第一次尝试实际上起到了作用,正如我所想。。。。但我不知道为什么它不。。。也许我错过了一些必要的图书馆?我已经确保我已经包括了引导css、引导js和jquery js文件…您的第一次尝试实际上是工作的,正如我所想。。。。但我不知道为什么它不。。。也许我错过了一些必要的图书馆?我已经确定我已经包含了引导css、引导js和jquery js文件……这不正是与
$('.transactionSheetToolbarShowDraft input[type=“checkbox”]”相同的吗?我刚刚尝试了你的代码,但事件似乎没有触发。很抱歉。我不明白为什么,但在我看来,复选框的
checked
状态是通过引导程序以编程方式更改的,因此不会触发任何事件。这不就是与
$('.transactionSheetToolbarShowDraft input[type=“checkbox”]')相同的吗。单击(function(){…})?我刚刚尝试了你的代码,但事件似乎没有触发。很抱歉。我不明白为什么,但在我看来,复选框的
checked
状态是通过引导程序以编程方式更改的,因此不会触发任何事件。
$('.transactionSheetToolbarShowDraft').click(function() {
    var checkbox = $(this).find('input[type="checkbox"]');
    setTimeout(function() {
        if (checkbox.is(':checked')) {
            console.log('is checked!');
        } else {
            console.log('not checked...');
        }
    }, 10);
});