我对处理 JQuery 的 Internet Explorer 或处理 IE 的 JQuery 有疑问 :)
只是我有以下代码:
$(function () {
$("*").each(function (i) {
var textalign = $(this).css("text-align");
if (textalign == "left") {$(this).css({'text-align': 'right'});}
else if (textalign == "right"){$(this).css({'text-align': 'left'});}
});
});
代码的功能是交换所有标签的文本对齐,在 FF 和 Chrome 中这段代码可以完美地工作,但在 IE 上我有一个问题,我认为它在更改父属性并交换后读取继承的文本对齐属性再次 !
为了了解发生了什么,我在应用 JQuery 代码后附上了 2 张源代码图片:
在FF(完美!):
在 IE 中(错误!):
顺便说一句,如果您想知道如何使用这种方式,我有开源项目并在数百个 JSP 上使用内联样式,也有表格,所以它的解决方案是翻转布局和支持多语言产品(支持 ltr 和 rtl 语言)......
希望找到解决方案。
注意:我使用的是 JQuery 1.7.1 ...这个问题在 ie8 和 ie9 中发布。
jQuery("*").each(jQuery("*").get().reverse(), function (i) {
注 2:使用或时我得到最差的结果jQuery(jQuery("*").get().reverse()).each(function (i) {
编辑 1 & 2:在这个问题里面
编辑3:
注意 3:页面上的所有元素都会出现此问题,无论该元素甚至script
、、、 ……等等html
,style
而且最奇怪的是,有些元素没有得到任何接触!看这个截图:
编辑4:
我的问题部分解决了,在 IE9 上运行良好,在 IE8 上不工作,来自Stefan的解决方案,在尝试了很多方法总结我的代码之后:
在 JQuery 代码中:
if (jQuery.browser.msie == false || jQuery.browser.msie == undefined) {
if (textalign == "left") {jQuery(this).css({'text-align': 'right'});}
else if (textalign == "right"){jQuery(this).css({'text-align': 'left'});}
}
在仅为 IE 加载的 CSS 文件中:
body *[style*="text-align: left"] {
text-align: right !important;
}
body *[style*="text-align: right"] {
text-align: left !important;
}
问候,