我的jQuery函数可以在IE8中使用,但不能在FF3.6.11中使用。为什么?
我有一组复选框,其中包括“无”选项。如果单击“无”,则应取消选中复选框集的其余部分。如果单击了集合其余部分中的一个或多个,则应取消选中“无”。以下是IE8中的工作。它在FF3.6.11中无声地失败。我怎样才能修好它 javascript我的jQuery函数可以在IE8中使用,但不能在FF3.6.11中使用。为什么?,jquery,cross-browser,Jquery,Cross Browser,我有一组复选框,其中包括“无”选项。如果单击“无”,则应取消选中复选框集的其余部分。如果单击了集合其余部分中的一个或多个,则应取消选中“无”。以下是IE8中的工作。它在FF3.6.11中无声地失败。我怎样才能修好它 javascript //检查并添加单击事件“checkToggle” //给所有的人 $(文档).ready(函数(){ $(“table.checktoggle”).find('input:checkbox')。单击(checktoggle); }); 函数检查切换(事件){ v
//检查并添加单击事件“checkToggle”
//给所有的人
$(文档).ready(函数(){
$(“table.checktoggle”).find('input:checkbox')。单击(checktoggle);
});
函数检查切换(事件){
var cur_chkbox=$(event.target);
如果(cur_chkbox.val()==0){//如果单击“无”,则取消选中集合的其余部分
$(“输入:复选框[name^=“+cur_chkbox.attr('name')+“]))).filter(函数(值){return value!=0;}).attr('checked',false);
}else{//else取消单击“无”
$(“输入:复选框[name^=“+cur_chkbox.attr('name')+“]))).filter(函数(值){return value==0;}).attr('checked',false);
}
}
HTML
许可
没有一个
看法
使用
添加
编辑
删除
位置
水系
名称属性中的方括号强制执行此问题
作为选择器尝试以下操作:
$("input:checkbox[name^='"+cur_chkbox.attr('name')+"']")
(属性值周围的单引号起作用)名称属性内的方括号强制了该问题 作为选择器尝试以下操作:
$("input:checkbox[name^='"+cur_chkbox.attr('name')+"']")
(属性值周围的单引号起作用)将函数更改为以下内容:
function checkToggle() {
var cur_chkbox=$(this);
if (cur_chkbox.val()==0) { //if clicked "None", uncheck the rest of the set
$("input:checkbox[name^='"+cur_chkbox.attr('name')+"']").filter(function(value){ return value!=0;}).attr('checked',false);
} else { //else unclick "None"
$("input:checkbox[name^='"+cur_chkbox.attr('name')+"']").filter(function(value){ return value==0;}).attr('checked',false);
}
}
由于某种原因,单击没有发送事件,因此我们可以使用$(this)
而不是$(event.target)
此外,您的选择器需要根据Molle博士的解决方案进行更改
将您的功能更改为以下内容:
function checkToggle() {
var cur_chkbox=$(this);
if (cur_chkbox.val()==0) { //if clicked "None", uncheck the rest of the set
$("input:checkbox[name^='"+cur_chkbox.attr('name')+"']").filter(function(value){ return value!=0;}).attr('checked',false);
} else { //else unclick "None"
$("input:checkbox[name^='"+cur_chkbox.attr('name')+"']").filter(function(value){ return value==0;}).attr('checked',false);
}
}
由于某种原因,单击没有发送事件,因此我们可以使用$(this)
而不是$(event.target)
此外,您的选择器需要根据Molle博士的解决方案进行更改
在线试用:我这样做了,Safari在var cur_chkbox=$(event.target)上抛出了一个错误代码>如下:
TypeError:expression'event'[undefined]的结果不是一个对象。
@eykanal:fiddle与上面的代码在click(checkToggle())
(函数名后面的大括号不在原始代码中)联机尝试:我这样做了,Safari在var cur\u chkbox处抛出了一个错误=$(event.target);
如下所示:类型错误:表达式“event”[undefined]的结果不是一个对象。
@eykanal:您的小提琴与上面单击时的代码不同(checkToggle())(函数名后的大括号不在原始代码中)