微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jQuery不同步

我有一个幻灯片和另一个功能,使用下面的代码更改四个框的样式:

jQuery(document).ready(function() {
    jQuery('#fp-slides')
    .cycle({
        fx: 'fade',speed:  '2500',timeout:  '3500',});
    var $elements = $('#fp-menu h2 a'); 

var total_elements = $elements.length;
var element_with_class = 0;
var handler = function () {
  $elements.eq(element_with_class).removeClass('over');
  element_with_class += 1;
  if ( element_with_class === total_elements )
  {
      element_with_class = 0;
  }
  $elements.eq(element_with_class).addClass('over'); 
};
window.setTimeout( function() { 
    handler(),window.setInterval(handler,6000); 
},4000);


});

第二个函数的第一个更改需要更快,然后设置为6000毫秒…这很好,但使用jQuery.cycle函数的顶级幻灯片在转换的几个循环后不同步.有没有办法让这些保持同步?

解决方法

怎么样…

jQuery(document).ready(function() {
    var slides = jQuery('#fp-slides')
    slides.cycle({
        fx: 'fade',}).cycle('pause');

    var $elements = $('#fp-menu h2 a'); 

    var total_elements = $elements.length;
    var element_with_class = 0;
    var handler = function () {
        $elements.eq(element_with_class).removeClass('over');
        element_with_class += 1;
        if ( element_with_class === total_elements ) {
            element_with_class = 0;
        }
        $elements.eq(element_with_class).addClass('over'); 
        slides.cycle("next");
    };
    window.setTimeout( function() { 
        handler(),6000); 
    },4000);
});

这可能不是你想要的,但基本上,我告诉循环器立即暂停,然后在你的handler()函数中,它告诉循环器移动到下一张幻灯片.

这样循环器只会在你的setInterval()中及时生成动画.你可能需要用更多的setTimeouts来调整它以获得你想要的确切效果,但这应该可以解决同步问题.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐