2012-04-03 58 views
0

我在使用jQuery Uniformed单选按钮和复选框的IE 9和8中都遇到问题。IE中的jQuery统一收音机/复选框

出于某种原因,它似乎是堆叠在彼此之上或其他东西。

我没有代码来显示,因为没有什么出规范的实现,但你可以在我住的沙箱在这里看一个例子:

http://sandbox.tsdapps.com/account/register

如果您在IE中看到它,INT通讯部分有两个空白的单选按钮。其中之一已经被选中,但似乎在演示文稿中的空白之下。对于条款复选框也是如此,如果您选中它,则可以看到底层元素被检查,因为选中标记的顶端重叠并且在框的右上方可见。

我到处搜索试图解决这个问题,我找不到任何东西。而github的问题门户网站有100个未解决的问题,似乎已经死了,所以我在这里。

任何帮助将不胜感激。

谢谢。

-Vince

+0

嗯你的统一在IE中产生多于一个元素而不是ff/chrome。你使用最新版本?因为在官方网页上它会产生与你的不同的HTML(http://uniformjs.com/) – 2012-04-03 22:39:05

+0

是的官方版本和github的最新版本。 – 2012-04-03 22:39:42

回答

0

试图把你的风格和脚本文件,并使用默认设置统一:

http://jsfiddle.net/AKfN8/2/

这在IE罚款...

所以它似乎是现代化者打破它,这是什么发生当我添加它:

http://jsfiddle.net/AKfN8/11/

所以我的猜测是你使用Modernizr HTML5输入标签扩展可能会打破统一。你可以尝试删除modernizr来测试它吗? :)

如果是这样,您可能需要在没有输入扩展名的情况下进行构建。

+0

嗯。如果我选择jQuery的1.7.1版本,设置为onDomReady并进行更新,则会生成每个广播和复选框的多个实例,在Chrome中带或不带moderizr。我会在IE中试用它,但我不确定你看到的是你说的是在工作。 – 2012-04-03 23:15:03

+0

那是因为你已经在你的'script.combined.js'中有jQuery了 - 我从你的网站上拿过的那个。因此,如果将它包含在JsFiddle中,它也会符号化两次。 – 2012-04-03 23:19:31

+0

事实上,它竟然不是Modernizr,它是一个占位符替代插件脚本,导致冲突。我发现了一个新的版本和责备...所有的斗鱼!感谢您的帮助,无论如何,您都指出了我的总体想法。 – 2012-04-04 01:54:40

0

该代码在IE8中无法正常工作,因为IE8(以及IE9据我所知)不支持:after:before伪css类。但是,您可以通过添加一个css和js文件来实现所需的行为,这些文件将是IE特定的,并且只会在IE浏览器中加载并添加一些额外的代码。

首先简单地从用户处隐藏checkbox,以避免复选框位于统一范围之上。

#some_holder_dom_node span>input[type='checkbox'] { 
    visibility: hidden; 
} 

一旦复选框被隐藏,我们需要处理它的选择/取消手动操作和触发事件与其他元素,例如:

(function(){ 
    $(document).on('click', '#some_holder_dom_node div.checker>span', function(){ 
    $(this).find('input:checkbox').trigger('click'); 
    }); 
}()); 

我用简单的JS和CSS,但你可以使用scss或sass来保存一些用于css规则的输入以及CoffeeScript或者某些东西来处理JS的东西。

相关问题