Cycle2初始化事件未触发

我正在使用Cycle2作为基本的旋转木马。 我的幻灯片项有时在他们的数据中有一个url,因此我必须使用Cycle2 api事件来使用该URL。

我的问题是,当’cycle-after’事件触发时,没有任何初始化事件会触发。 所以如果我的第一张幻灯片有一个url,则没有任何反应。 这是我的代码:

pressSlideshow.on({ 'cycle-post-initialize': function(event) { console.log('call'); var a = $('img.cycle-slide-active'); var d = a.data('url'); if (d !== undefined) { pressLink.attr('href', a.data('url')).show(); } else { pressLink.hide(); } }, 'cycle-after': function(event, optionHash, outgoingSlideEl, incomingSlideEl, forwardFlag) { var a = $(incomingSlideEl); var d = a.data('url'); if (d !== undefined) { pressLink.attr('href', a.data('url')).show(); } else { pressLink.hide(); } } }); 

第一个事件永远不会触发,但是当我滚动幻灯片时,’cycle-after’事件工作正常。 我还尝试了从未触发过的’cycle-initialized’事件,以及仅在滚动后但未在初始化时触发的’cycle-update-view’事件。

是什么赋予了? &thnx提前:}

Cycle2活动文档

我刚遇到同样的问题。

来自FAQ

为什么循环初始化事件不会触发?

它确实如此,我保证。 但是如果你在事件监听器已经解雇后将其绑定,那么你将无法听到它。 仔细检查你是不是太晚了。

必须在运行cycle()init方法之前绑定事件。

假设您设置了以下代码:

 var pressSlideshow = $('.pressSlideshow').cycle(); pressSlideshow.on({ 'cycle-post-initialize': function(event) { console.log('call'); var a = $('img.cycle-slide-active'); var d = a.data('url'); if (d !== undefined) { pressLink.attr('href', a.data('url')).show(); } else { pressLink.hide(); } }, 'cycle-after': function(event, optionHash, outgoingSlideEl, incomingSlideEl, forwardFlag) { var a = $(incomingSlideEl); var d = a.data('url'); if (d !== undefined) { pressLink.attr('href', a.data('url')).show(); } else { pressLink.hide(); } } }); 

改为:

 $(document).on('cycle-post-initialize', '.pressSlideshow', function(){ console.log('call'); var a = $('img.cycle-slide-active'); var d = a.data('url'); if (d !== undefined) { pressLink.attr('href', a.data('url')).show(); } else { pressLink.hide(); } }); var pressSlideshow = $('.pressSlideshow').cycle(); pressSlideshow.on({ 'cycle-after': function(event, optionHash, outgoingSlideEl, incomingSlideEl, forwardFlag) { var a = $(incomingSlideEl); var d = a.data('url'); if (d !== undefined) { pressLink.attr('href', a.data('url')).show(); } else { pressLink.hide(); } } }); 

记下.pressSlideshow选择器,因为你的选择器可能不同。

干杯