我使用Cycle2作为基本轮播。我的幻灯片项目有时会在其数据中包含网址,因此我必须使用Cycle2 api事件在该网址中使用该网址。
我的问题是,虽然'周期 - 之后'事件触发很好,没有任何初始化事件会触发。所以如果我的第一张幻灯片有一个网址,则没有任何反应。这是我的代码:
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'活动工作正常。我也尝试过循环初始化的'从未被解雇的事件,以及“周期 - 更新 - 视图”#39;仅在滚动后触发但不在初始化时触发的事件。
是什么给出的? &安培; thnx提前:}
答案 0 :(得分: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();
}
}
});
请改为:
$(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
选择器,因为您的选择可能不同。
干杯