Jquery 引导:选中label.btn内的复选框时,更改事件不起作用。
我有Bootstrap v3.3,我有以下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=
复选框
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);
});