1

我的 css 中有一些基于元素属性的预定义样式。如果我将属性的值更新为也具有预定义样式的新内容,则该样式将应用于 FF 和 Chrome,但不适用于 IE。请参阅示例并在输入字段中输入。

JS:

$('input').on('keypress', function(){
    var l = parseInt($(this).attr('level'), 10) + 1;
    $(this).attr('level', l);
});

CSS:

input[level="0"]{background:red;}
input[level="1"]{background:blue;}
input[level="2"]{background:green;}
input[level="3"]{background:black;}

http://jsfiddle.net/ce6S4/

任何帮助表示赞赏,谢谢。

编辑:适用于 IE 9 但不适用于 <= 8

4

2 回答 2

5

这是一个IE错误。请注意,当您调整窗口大小时,元素会正确呈现。

通过设置类名触发回流:

this.className = this.className; // Or .addClass(' ');

演示:http: //jsfiddle.net/ce6S4/6/

$('input').on('keypress', function(){
    var l = parseInt($(this).attr('level'), 10) + 1;
    $(this).attr('level', l).addClass(' ');
});
于 2012-04-16T09:45:16.937 回答
0

http://jsfiddle.net/ce6S4/3/

尝试这个

   $('input').on('keydown', function(){
         var l = parseInt($(this).attr('level'), 10) + 1;
    alert(l); //can be removed.
         $(this).attr('level', l.toString()).hide().show().focus();

});​
于 2012-04-16T09:38:45.237 回答