任何人都可以帮我找出一种方法来阻止我的.trigger('click')不断触发fancybox事件

时间:2013-06-07 21:21:43

标签: jquery fancybox flip delay

当你点击我需要它翻转,然后延迟,然后弹出fancybox。我可以想办法让延迟插件后触发fancybox的唯一方法是使用延迟插件和.trigger('click')在延迟后触发它。问题是它不断地反复触发.trigger('click')并且我无法找到一种方法来阻止它.off()会杀死其他所有东西。我真的很感激一些建议。

Live example

<script type="text/javascript">
jQuery.noConflict();

// First Home Page Popout Box
jQuery(document).ready(function() {
   jQuery('#card-processing-link').live('click', function() {
       jQuery('#card-processing-box').flip({
              'direction' : 'lr',
               speed      : '300'
       });
   });    
   //Fancybox popout event
   jQuery('#card-processing-link').delayed('click', 400, function(){          
              jQuery(this).trigger('click').fancybox({
              'onStart'         : function(){
                                  jQuery('#card-processing-box').hide();
                                  jQuery('#card-processing-popout').show();
                                  },
              'transitionIn'   : 'elastic',
              'transitionOut'  : 'fadeOut',
              'speedIn'        : 300,
              'speedOut'       : 500,
              'width'          : '420',
              'height'         : 'auto',
              'scrolling'      : 'no',
              'centerOnScroll' : 'true',
              'overlayColor'   : 'transparent',
              'onClosed'       : function(){
                                 jQuery('#card-processing-popout').hide();
                                 jQuery('#card-processing-box').fadeIn();

                                           }            
       });
     });
});
</script>

1 个答案:

答案 0 :(得分:1)

为什么是否要触发点击事件 a,如果您已点击它

jQuery(this).fancybox({

应该足够了..

否则,您将最终处于无限循环中,这将继续触发点击事件

您可以使用setTimeout将执行延迟到以后的时间

jQuery.noConflict();

// First Home Page Popout Box
jQuery(document).ready(function () {
    jQuery('#card-processing-link').live('click', function () {
        jQuery('#card-processing-box').flip({
            'direction': 'lr',
            speed: '300'
        });

        var $this = jQuery(this);
        setTimeout(function () {
            $this.fancybox({
                'onStart': function () {
                    jQuery('#card-processing-box').hide();
                    jQuery('#card-processing-popout').show();
                },
                    'transitionIn': 'elastic',
                    'transitionOut': 'fadeOut',
                    'speedIn': 300,
                    'speedOut': 500,
                    'width': '420',
                    'height': 'auto',
                    'scrolling': 'no',
                    'centerOnScroll': 'true',
                    'overlayColor': 'transparent',
                    'onClosed': function () {
                    jQuery('#card-processing-popout').hide();
                    jQuery('#card-processing-box').fadeIn();

                }
            });

        }, 400);
    });
});