iiz*_*iiz 8 jquery events jquery-cycle2
我正在使用Cycle2作为基本的旋转木马.我的幻灯片项有时在他们的数据中有一个url,因此我必须使用Cycle2 api事件来使用该URL.
我的问题是,当'cycle-after'事件触发时,没有任何初始化事件会触发.所以如果我的第一张幻灯片有一个网址,则没有任何反应.这是我的代码:
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();
}
}
});
Run Code Online (Sandbox Code Playgroud)
第一个事件永远不会触发,但是当我滚动幻灯片时,'cycle-after'事件工作正常.我还尝试了从未触发过的'cycle-initialized'事件,以及仅在滚动后但未在初始化时触发的'cycle-update-view'事件.
是什么赋予了?&thnx提前:}
veg*_*sta 19
我刚遇到同样的问题.
来自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();
}
}
});
Run Code Online (Sandbox Code Playgroud)
改为:
$(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();
}
}
});
Run Code Online (Sandbox Code Playgroud)
记下.pressSlideshow选择器,因为你的选择器可能不同.
干杯