3

我正在尝试使元素闪烁(通过切换元素的可见性),但无论出于何种原因,它都无法在 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);
}
4

2 回答 2

2

正如@nevermind 在上面的评论中指出的那样,问题不在于 Opera。问题在于 jsFiddle iframe。请注意,jsFiddle 仍处于 alpha 阶段。因此,难免会有一些怪癖。希望开发人员尽快修复它。

尽管如此,您提供的代码并不真正需要 jQuery,并且setInterval在 Opera 12 中运行良好。例如,这就是我所做的,它很好地闪烁:http: //jsfiddle.net/XwEhj/

于 2013-07-09T03:22:06.223 回答
1

我想你是在一个角落里的马车箱里。

当涉及到用户界面时,依靠图形对象的状态来找出视图的状态并不是一个好习惯。换句话说,您不想在 HTML 元素中“读取”视图的状态,而是在称为视图模型的一个变量或一组变量中。

我建议你用这种方式重写你的代码,我认为有一个很好的机会来解决这个错误:

var blinker;
function blink(elem) {
    clearInterval(blinker);

    var visible = false;
    blinker = setInterval(function() {
        visible = !visible;
        $(elem).css('visibility', visible ? 'visible' : 'hidden');
    }, 500);
}
于 2013-07-09T02:12:26.670 回答