我正在重写我的插件,我想尝试处理过去的问题。
单击复选框后,将触发更改事件。它正在控制台中登录。
但是,如果您使用左侧的按钮,则不会触发“更改”。
使用该插件,如果用户使用已有的代码动态选中复选框或单选按钮,我希望能够检测到此更改。
有什么想法吗?
HTML:
<input type="button" name="check" value="Checkbox" />
<input type="checkbox" name="newsletter" value="true" />
jQuery的:
$(function() {
// This toggle checks and unckecks the box
$('input:button').toggle(function() {
$('input:checkbox').prop("checked", true);
}, function() {
$('input:checkbox').prop("checked", false);
});
// Detects change of checkbox
$('input:checkbox').on("change", function() {
console.log('checked!');
});
});
答案 0 :(得分:2)
最简单的解决方法是手动触发更改事件:
$('input:checkbox').prop("checked", true).change();
修改:您也可以简化按钮代码,而不是使用toggle
,只需使用click
并将checked
属性分配给其对面当前价值:
$('input:button').on('click',function() {
var $checkbox = $('input:checkbox');
$checkbox.prop('checked', !$checkbox.is(':checked')).change();
});
答案 1 :(得分:0)
您只需触发复选框上的click事件,而不是手动更改属性:
$('input:checkbox').click();
答案 2 :(得分:0)
$('input:button').click(function(){
$('input:checkbox').trigger("change");
});
这允许在您单击按钮
时触发“更改”事件答案 3 :(得分:0)
是的,触发复选框,我就是这样做的(替换你小提琴代码的第一部分):
// This toggle checks and unckecks the box
$('input:button').on('click', function(event){
$('input:checkbox').trigger('click');
});
当然假设您的目标是基本上按下按钮的方式来检查或取消选中该框。