我有一个使用 iCheck 样式的复选框。这部分工作正常。我的问题是我想在每次更改时将复选框状态保存在我的数据库中。但是我的 ajax 请求只在第一次触发。
我有这样的设置:
HTML:
<ul class='tasks'>
<li><input type=checkbox rel='module' data='1' name=done[] class='taskStatus'>Text</li>
</ul>
jQuery
$("input[type=checkbox]").on("ifClicked", function(){
alert("init");
var stateObj = {
id: $(this).attr("data"),
mode: $(this).attr("rel"),
state: null
};
if($(this).prop("checked") === false){
stateObj.state = 1;
} else {
stateObj.state = 0;
}
updateState(stateObj);
});
function updateState(stateObj){
alert("updating");
$.ajax({
url: "moduleAjax.php?module=" + stateObj.mode + "&page=eventState",
type: "POST",
data: "obj=" + JSON.stringify(stateObj),
success: function(data){
alert(data);
},
error: function(a, b, c){
alert("error");
}
});
}
我试图注释掉 ajax 请求。这样做,警报框会按应有的方式触发。
我有一个解决方法添加 window.location.reload(); 警报(数据)之后。但在我看来,这不应该是必要的。我也尝试过异步发送请求:false;模式没有成功。我没主意了。
问题
为什么在发送 ajax 请求时,不是在每次点击时触发 ifClicked 事件,而只是第一次触发?
附加信息
执行脚本时,控制台中没有错误。没有任何警报第二次运行。
我什至无法在 jsfiddle 中重现该问题。
有任何线索的人吗?
编辑
我刚刚使用新的 iCheck beta 源代码进行了测试。然后事件会被触发,但是会引发其他一些问题。所以这似乎源于 iCheck 的一个错误。(但我可能是错的)。