自定义单选按钮 – IE会杀了我

我正在使用jQuery来自定义一些单选按钮。 我有两个不同的单选按钮样式,所以你会看到两个if语句寻找这两个不同的类。

我遇到的问题是,该脚本在一切都可以完美地运行,但Internet Explorer。 可悲的是,我工作的公司已经将IE8表示为所有网站的行业标准,因此所有的东西都可以与IE8一起使用。

我发给你的是我的代码

单选按钮1的HTML

   

单选按钮2的HTML

   > 

JQuery运行整个shaz-bot

  function setupLabel() { if ($('.label_check input').length) { $('.label_check').each(function(){ $(this).removeClass('c_on'); }); $('.label_check input:checked').each(function(){ $(this).parent('label').addClass('c_on'); }); }; if ($('.label_radio input').length) { $('.label_radio').each(function(){ $(this).removeClass('r_on'); }); $('.label_radio input:checked').each(function(){ $(this).parent('label').addClass('r_on'); }); }; if ($('.label_radio-STD input').length) { $('.label_radio-STD').each(function(){ $(this).removeClass('s_on'); }); $('.label_radio-STD input:checked').each(function(){ $(this).parent('label').addClass('s_on'); }); }; }; $(document).ready(function(){ $('label').click(function(){ setupLabel(); }); setupLabel(); });  

我在每个IF语句上抛出警告,并且它们已经很好了,我已经在EACH循环上抛出警报并且它们已经很好了。 我曾经有一行jQuery“$(’body’)。addClass(”has-js“)”作为document.ready函数的第一行,但是html body从来没有一类has-js。 我进一步查看了代码,并意识到我不需要它来运行我的代码。 但令我困扰的是$(’body’)。addClass(“has-js”)从未奏效。

可能就像我的IE8的JavaScript被关闭一样简单吗? 如果是这样,我是否可以强迫任何可能关闭它的人?

这是来自墨菲的破碎代码。 http://jsfiddle.net/GRstu/10/

注意小提琴input[type=radio]{display:none;}的CSS行input[type=radio]{display:none;} 。 该行将导致单击标签时未选中/取消选中单选按钮。 这就是IE的工作原理。 单击相应的标签时,您需要执行一种解决方法来检查隐藏的无线电。

您可以通过向click事件添加一行来完成此操作:

 $('label').click(function() { $(this).children("input").prop("checked", true); //This is the key setupLabel(); }); 

这是解决方案的jsfiddle: http : //jsfiddle.net/GRstu/11/

请注意,这是与此问题中提出的类似的解决方案和问题: Internet Explorer(和jquery)中的标签和隐藏字段

你可以在你的html中抛出一个标签,以便在关闭javascript的情况下向用户显示一条消息,但是你无法在网页中为它们启用它。

例如

  

但是,由于您处于公司环境中,因此系统管理员可以创建组策略以在所有用户的Internet Explorer设置中启用Javascript。