2017-12-12 2 views
1

プラグインの初期関数を呼び出した後、私はで働いている:私はこのギャラリーは無問題で動作するように取得することができます3D GallerySource code hereアクセスjQueryオブジェクト

が、私はプレーを含めるように機能を拡張し、トラブルを抱えていると、一時停止ボタン。 I've set up a fiddleと私は現在どのようにスライドショーを起動して実行しているのですか?

私は重要なビットがここにあると信じて:

_startSlideshow: function() { 
    var _self = this; 

    this.slideshow = setTimeout(function() { 
    _self._navigate('next'); 

    if (_self.options.autoplay) { 
     _self._startSlideshow(); 
    } 
    }, this.options.interval); 
} 

私が集まるところでは、それがスタートスライドショー機能をヒット次回ように私が行うために必要なすべてのギャラリーオブジェクトの自動再生プロパティを更新され、それその代わりに一時停止します。私が持っている問題は、いったんスライドショーを始めたら、それにアクセスする方法がわからないことです。物事を少しだけコントロールするために、私はフィドルからjavascriptを抜き出してChromeコンソールに入れてそこで実行しましたので、すべての作業ビットを見ることができますが、まだ更新できないようです。最後の一言は、そこには唯一の公開機能が破壊されているようだが、スライドショーを開始した後もオブジェクトを呼び出すことができない。私がそれを働かせることができれば、私は絶対にsetAutoplay(bool)関数を書いただけです。

これは私の初心者の構文の理解と混在したスコープの問題ではないと思いますが、私は助けていただければ幸いです。

- ここでは、自動再生のものにアクセスして更新しようとしているいくつかの方法が含まれていますが、動作していません。また、駆除機能を発揮しています。 https://jsfiddle.net/wzrooqof/2/

答えて

1

私は図書館のコードを見てきました。コードを変更することなく実行できます。それは公開されているので、ソースコードをそのまま残しておきます。あなたのJSコードで

は、それを使用する前にこれを追加します。

$.Gallery.prototype.pause = function() { 
    clearTimeout(this.slideshow); 
    this.options.autoplay = false; 
} 

$.Gallery.prototype.resume = function() { 
    this.options.autoplay = true; 
    this._startSlideshow(); 
} 

次に、あなたはこのようにスライドショーを再開/一時停止することができます。

var slideshow = $('#dg-container').gallery({autoplay: true}); 

slideshow.data("gallery").pause(); 

slideshow.data("gallery").resume(); 

JSFiddle example

+1

@ニコラス大歓迎です! [** '.data()' **](https://api.jquery.com/data/)は、一致する要素に関するいくつかのデータを保存するjQuery関数です。ライブラリは 'Gallery'インスタンスを作成し、一致する要素と' .data'を介して関連付けるので、そのインスタンスを取得するには '.data'を呼び出す必要があります。言い換えれば、 'slideshow'はjQueryオブジェクトです。私たちの' pause/resume'関数は 'Gallery'インスタンス上で動作するので、' slideshow'に関連した 'Gallery'のインスタンスを取得し、一時停止/再開します。また、私たちにとっては 'Gallery'クラスが公開されている(' $ .Gallery')ことができて幸いです。そうでなければ、ソースコードを変更しました。 –

関連する問題