我的jQuery函数可以在IE8中使用,但不能在FF3.6.11中使用。为什么?

我的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

我有一组复选框,其中包括“无”选项。如果单击“无”,则应取消选中复选框集的其余部分。如果单击了集合其余部分中的一个或多个,则应取消选中“无”。以下是IE8中的工作。它在FF3.6.11中无声地失败。我怎样才能修好它

javascript
//检查并添加单击事件“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())(函数名后的大括号不在原始代码中)