不太确定如何解释这个问题,但现在就去了。
我有一个基于复选框隐藏/显示的功能:
$( “#复选框”)发生变化(change_visibility);
function change_visibility() {
if ($("#checkbox").is(":checked")) {
$("#theForm").fadeTo("opacity", "1", function() {
//End Animation
});
} else {
$("#theForm").fadeTo("opacity", "0.3", function() {
//End Animation
});
}
问题是,现在我已将此复选框绑定到其他位置的按钮,而change()的行为与我预期的不同。
$("#myButton").click(function(){
$("#checkbox").attr("checked", true);
});
即使复选框正在改变,但它似乎并没有像我手动点击它时那样调用change_visibility()函数。
知道为什么会这样吗?
答案 0 :(得分:5)
每当您更改输入元素的状态或值时,都不会触发更改事件。
但你可以手动触发它:
$("#checkbox").prop("checked", true).change();
答案 1 :(得分:0)
简单的方法就是这样做
$("#myButton").click(function(){
$("#checkbox").attr("checked", true);
$("#checkbox").change();
});
答案 2 :(得分:0)
当您手动更改复选框时,听起来像.change()事件不会被触发。但解决方案仍然非常简单。只需自己调用change_visibility()函数:
$("#myButton").click(function(){
$("#checkbox").attr("checked", true);
changeVisibility();
});
答案 3 :(得分:0)
将事件处理程序附加到change
事件,并在按钮单击时调用更改方法。
$("#checkbox").change(function() {
if (this.checked) {
$("#theForm").fadeTo("opacity", "1", function() {
//End Animation
});
} else {
$("#theForm").fadeTo("opacity", "0.3", function() {
//End Animation
});
});
$("#checkbox").attr("checked", true).change();
答案 4 :(得分:0)
尝试
$("#myButton").click(function(){
$("#checkbox").attr("checked", true).trigger('change');
});
在动态选中框后,应触发更改事件。