使用jQuery的setTimeout()不适用于Chromium

时间:2011-11-21 20:58:20

标签: javascript jquery timeout

我有自己的图库代码,如:

// Gallery
$(function() {
  var images = $('#gallery ul li img');
  var next = 0;
  var timer;
  var delay = 5000;
  images.click(function() {
    if($(this).hasClass('current')) return false;                   // Prevent from re-showing
    $('#gallery ul li.current').toggleClass('current');             // Change current highlighted photo
    $(this).parent().toggleClass('current');                        // to $(this)
    $('#gallery img#show-window').attr('src', $(this).data('src')); // Change viewed photo
    $('#gallery .panel h2').text($(this).attr('title'));            // Set title 
    $('#gallery .panel p').text($(this).attr('alt'));               // Set description
    next = $.inArray(this, images) + 1;
    clearTimeout(timer);
    timer = setTimeout(function() {
      images[next % images.length].click();
    }, delay);
  });
  images[0].click();
});

如果我在Chromium上运行它(Arch Linux 15.0.874.121(Build 0 Linux)),那么在我点击任何一个图库预览之前它就不会显示图像,即使这样它也不会在5s之后更改为下一张图片。它适用于Firefox 8.0和Opera 11.52。

2 个答案:

答案 0 :(得分:1)

您是否尝试过“doTimeout”功能?

$.doTimeout( 'someid', 1000, function( state ){
             .alert( state ); // alert true in 1 second
             .}, true);

答案 1 :(得分:0)

也许只是我,但是当你使用setInterval以逗号方式点击下一张图片时,使用setTimeout执行此操作似乎有点多余。

function nextImage()
{
    // insert image selection logic here
}

$(function(){
    var imgDaemon = setInterval(nextImage(), 5000);
});