Jquery 为什么我必须调用alert一次才能使javascript正常工作?
这个问题真的很奇怪。我想做的是将复选框值添加到隐藏字段中,如果未选中,则从隐藏字段中删除该值。我使用javascript来实现这一点,但是,我发现只有调用alert一次,代码才能正常工作,否则就无法正常工作。谁能告诉我为什么Jquery 为什么我必须调用alert一次才能使javascript正常工作?,jquery,Jquery,这个问题真的很奇怪。我想做的是将复选框值添加到隐藏字段中,如果未选中,则从隐藏字段中删除该值。我使用javascript来实现这一点,但是,我发现只有调用alert一次,代码才能正常工作,否则就无法正常工作。谁能告诉我为什么 var cpo={ AddCheckList:function(){ alert('aaaaaaaaaa'); //If I comment this line, the following code won't work. $(".BillChec
var cpo={
AddCheckList:function(){
alert('aaaaaaaaaa'); //If I comment this line, the following code won't work.
$(".BillChecked").change(function() {
if ($(this).is(':checked')) {
var idList = $('#CPO_BillList').val() + $(this).attr('value') + ",";
$('#CPO_BillList').val(idList);
} else {
var temp = $('#CPO_BillList').val().replace($(this).attr('value') + ',', '');
$('#CPO_BillList').val(temp);
}
alert($('#CPO_BillList').val());
});
}
我打电话
cpo.AddCheckList();
在这一页的底部
上面是$(document).ready()函数。只有在警报方法被调用一次时才起作用。请尝试这种方法,检查代码并避免执行循环
$(document).ready(function(){
var billChecked = $(".BillChecked");
var cpoBill = $('#CPO_BillList');
var cpo = {AddCheckList:function(){
billChecked.change(function(){
var checked = $(this).is(':checked');
var billVal = $(this).val();
checked ? v = cpoBill.val() + billVal : v = cpoBill.val().replace(billVal + ',', '');
cpoBill.val(v);
});
};
});
警报对话框会阻止其余javascript的执行。以下其中一项将起作用: 输入代码
$(document).ready(function{
/*code here*/
});
或者将脚本块放在
标记的底部
您还应该将$(“.BillChecked”)
存储在一个变量中,因为每个带有选择器的jQuery调用都非常昂贵
var $billChecked = $(".BillChecked");
为什么要循环绑定更改事件?那没必要。。您在控制台中是否也有错误?可能是因为您没有将此代码放入处理程序。但是,如果我没有对第一行进行注释,代码是如何工作的?@Steven,因为此警报延迟了其余javascript的执行。@Christoph:有意义。那么你有解决这个问题的方法吗?我刚刚更新了我的帖子,实际上我把代码放在了页面的底部,但是如果我评论了这个警告,它仍然没有work@steven所以把它放到doument.ready中,它肯定会工作。如果我不评论这个警告('aaaaaaaaaa'),加载页面时会弹出警告窗口;