我試圖在Nivo Lightbox中顯示的項目實現CSS動畫轉換。 我已經插入並運行了新的函數,但是下面的兩個函數在完成之前運行。如何鏈接.call()函數 - 添加轉換到Nivo燈箱
$('.nivo-lightbox-prev').off('click').on('click', function(e){
e.preventDefault();
var index = galleryItems.index(currentLink);
currentLink = galleryItems.eq(index - 1);
if(!$(currentLink).length) currentLink = galleryItems.last();
$this.options.beforePrev.call(this, [ currentLink ]); # <---- new function I added
$this.processContent(content, currentLink); # <---- existing function 1
$this.options.onPrev.call(this, [ currentLink ]); # <---- existing function 2
});
我知道的唯一方法是將它們放在回調中,但.call()不接受回調。
我嘗試這樣做:
function beforePrev(callback){
$this.options.beforePrev.call(this, [ currentLink ]);
callback();
}
function onPrev(){
$this.processContent(content, currentLink);
$this.options.onPrev.call(this, [ currentLink ]);
}
beforePrev(onPrev);
,但它的表現一樣。
在情況下,它相關的beforePrev代碼:
beforePrev: function() {
el = $('.nivo-lightbox-content');
el.addClass('animated fadeOutLeft');
el.one('webkitAnimationEnd oanimationend msAnimationEnd animationend', function (e) {
el.removeClass('fadeOutLeft');
});
},
任何人都可以點我在正確的方向?
更新額外的清晰度/編輯: 這是完整的原始NIVO代碼:link
從我對它的閱讀,$this
僅僅是一個標準的變量指的是初始化函數,而不是一個DOM對象。我認爲這是這很難做到的原因之一。
謝謝@kapantzak - 看起來像它會工作,但我無法得到它。 我認爲**問題是'$ this'是指init對象? (這是完整的Nivo代碼:[link](https://github.com/gilbitron/Nivo-Lightbox/blob/master/nivo-lightbox.js)) – phil 2014-12-03 14:41:55