Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
触发javascript对复选框的更改_Javascript_Jquery_Checkbox_Onchange - Fatal编程技术网

触发javascript对复选框的更改

触发javascript对复选框的更改,javascript,jquery,checkbox,onchange,Javascript,Jquery,Checkbox,Onchange,我正在构建一个jQuery插件来设置复选框的样式。我隐藏了真正的一个,并在它之后插入按钮,点击按钮时切换隐藏复选框。但是如果我通过JavaScript选中隐藏的复选框,假按钮当然不会改变。我曾考虑过使用jQuery的.change()进行更改,但当使用JavaScript进行更改时,它也不会触发更改,而不是实际单击复选框 我希望这个插件是通用的,如果有人有一个像“全部选中”或“全部取消选中”这样的按钮,它可以用JavaScript实现,我希望我的假复选框按钮可以相应地改变 问题是我应该使用什么方

我正在构建一个jQuery插件来设置复选框的样式。我隐藏了真正的一个,并在它之后插入按钮,点击按钮时切换隐藏复选框。但是如果我通过JavaScript选中隐藏的复选框,假按钮当然不会改变。我曾考虑过使用jQuery的
.change()
进行更改,但当使用JavaScript进行更改时,它也不会触发更改,而不是实际单击复选框

我希望这个插件是通用的,如果有人有一个像“全部选中”或“全部取消选中”这样的按钮,它可以用JavaScript实现,我希望我的假复选框按钮可以相应地改变

问题是我应该使用什么方法来代替jQuery的change(),以便不仅观察鼠标单击所做的更改,还观察javascript所做的更改,例如,
$('checkbox').prop('checked',true)

edit2:
我意识到没有合适的方法用JavaScript查看属性,除了每秒为每个复选框检查几次属性,这非常不吸引人。我决定不在我的插件中包含这种低效的功能,而是让用户在希望通过JavaScript操作值时也触发更改。

您需要手动触发更改事件

$('#checkbox').attr('checked', 'checked').change();
看看这个:
您不能查看属性。您可以设置一个计时器,每隔几毫秒查找一次更改,但这并不令人满意

相反,当您的插件需要更新时,您应该依赖所有其他代码来触发更改事件(有时也可能不需要):

$(':checkbox').prop('checked', true).change();