我试图使一个元素闪烁(通过对元素的可见性进行处理),但是由于某种原因它不能在Opera中工作。适用于Firefox和Chrome。
这是一个工作样本的小提琴:http://jsfiddle.net/UDWkK/2/
我认为我没有犯任何明显的错误。
在Opera 12中测试
代码:
var blinker;
function blink(elem) {
clearInterval(blinker);
blinker = setInterval(function() {
if ($(elem).css('visibility') === 'hidden'){
$(elem).css('visibility', 'visible');
} else {
$(elem).css('visibility', 'hidden');
}
}, 500);
}
答案 0 :(得分:2)
正如@nevermind在上面的评论中指出的那样,问题不在于Opera。问题在于jsFiddle iframe。请注意,jsFiddle仍处于alpha阶段。因此肯定会有一些怪癖。希望开发人员能尽快修复它。
然而,你提供的代码并不真正需要jQuery,而且setInterval
在Opera 12中运行得非常好。例如,这就是我所做的,它很好地眨眼:http://jsfiddle.net/XwEhj/
答案 1 :(得分:1)
我认为你正处于一个角落里的小车。
当涉及到用户界面时,依靠图形对象的状态来查找视图的状态并不是一个好习惯。换句话说,您不希望“读取”HTML元素中的视图状态,而是“变量”或称为视图模型的变量集。
我建议您以这种方式重写代码,我认为有很好的机会解决这个问题:
var blinker;
function blink(elem) {
clearInterval(blinker);
var visible = false;
blinker = setInterval(function() {
visible = !visible;
$(elem).css('visibility', visible ? 'visible' : 'hidden');
}, 500);
}