2017-12-12 8 views
-5

autosize.js(旧バージョン)からswiper.jsを更新する方法を探しています。より詳細にはautosize.jsの関数を呼び出してswiper.jsを更新する

私はswiper内の自動サイズ調整のテキストエリアを持っています。スワイパーは自動高さに設定されています。これは、テキストエリアがoverflow:hiddenに設定されたスワイパースライド内にあることを意味します。今度は、テキストエリアの高さが変化するとスライドの高さは変化しないので、コンテンツのoverflow:hidden部分が途切れてしまいます。

これを解決するために、テキストエリアの高さを変更するときにスライドの高さを更新したいと考えています。

if (original !== height) { 
    ta.style.height = height + 'px'; 
    if (callback) { 
     options.callback.call(ta,ta); 
    } 

    /* send trigger to update slide here */ 
} 

この部分が起こっているとき、私はswiperを更新するためのプラグインの外にトリガを送信したい:autosize.jsで

は、高さが設定されている(ライン178からの)部分があるプラグイン滑り台。私はこれのために(何もない)機能を持っています。

function updateSwiper(){ 
    mySwiper.update(); 
} 

プラグインとカスタム機能(上記)は同じファイルにあります。

だから私はこの問題をどうやって解決できるのだろうかと疑問に思っています。 ありがとうございます。

+0

私はあなたがそれが少し奇妙なのでそれを見つけることができないと思う。プラグインは自己完結型の作業単位でなければなりません。プラグイン内から外部関数を呼び出すと、カプセル化が破られます。 – Jamiec

+1

ようこそスタックオーバーフロー! [ツアー]を見て回り、[ヘルプ]、特に[*どのように私は良い質問をしますか?](/ help/how-to-ask)を読んでください。私たちは見ることができません。問題を示す[mcve]で質問を更新してください。一般に、内部スコープから外部スコープ内の関数を呼び出すことは非常に簡単です:あなたはそれらを呼び出すだけです。 –

+1

関数ポインタを* in *に渡して、適切なタイミングで実行することを検討してください。プラグインを設定すると、このコールバック関数は外部関数への呼び出しになります。 – Jamiec

答えて

0

私の研究では、古いバージョンのautosize.jsを使用していることがわかりました。新しいバージョンには、テキストエリアの高さが変更されたときのトリガーがあります。このドキュメントで読み取ることができたよう:Autosize Documentation

にjQueryでこれを解決するには、コードのこの部分を使用することができます。

$('textarea').each(function(){ 
    autosize(this); 
}).on('autosize:resized', function(){ 
    console.log('textarea height updated'); 
}); 

このコードは、最初のテキストエリアに自動サイズ調整を設定し、高さがあれば追跡するon('autosize.resized')を使用しています変更されます。私のバージョンには、このコードの更新

$('textarea').each(function(){ 
    autosize(this); 
}).on('autosize:resized', function(){ 
    updateSwiper(); 
}); 

は感謝すべて、私の問題を解決しました。

関連する問題