ここで提案されているボイラープレートに従って構造化されたプラグインがあります。
http://markdalgleish.com/2011/05/creating-highly-configurable-jquery-plugins/
プラグインはChromeで希望どおりに応答しますが、InternetExplorerとFireFoxのエラーが発生します
ここで使用中のプラグインを表示できますhttp://websonalized.com/myplugin.php
MSIE開発者コンソールのエラー(デバッグ):
無効な引数myplugin.js、84行目文字5
Firefoxのエラー:
エラー:役に立たないsetTimeout呼び出し(引数の前後に引用符がありませんか?)
setTimeout(animateSlide(sliderImage)、3000);
これはコードの関連ビットです
...
this.$slides.each(function(i){
slide_config = $.extend({
duration: 3000,
squares: 225, //it will display the closest 'perfect square' number of tiles
transition: 'linear'
}, $(this).data());
var sliderImage = $(this).find('.slidebg');
...
setTimeout(animateSlide(sliderImage), 3000);
function animateSlide(s){
console.log('ANIMATED IMAGE SLIDER ' + i);
console.log(s);
$(s).show('explode', { pieces: slide_config.squares }, 5000);
};
...
setTimeoutビットを次のように書き直すと、エラーはなくなります。
...
this.$slides.each(function(i){
slide_config = $.extend({
duration: 3000,
squares: 225, //it will display the closest 'perfect square' number of tiles
transition: 'linear'
}, $(this).data());
var sliderImage = $(this).find('.slidebg');
...
setTimeout(function(){$(sliderImage).show('explode', { pieces: slide_config.squares }, 5000);}, 3000);
...
ただし、slide_config.squaresの値はこのインスタンスに対応しておらず、値は最後のスライドデータによって設定された値です。
this.$slides.each(function(i){
slide_config = $.extend({
duration: 3000,
squares: 225, //it will display the closest 'perfect square' number of tiles
transition: 'linear'
}, $(this).data());
これは文脈と関係があると思います。誰かが私がsetTimeoffをどのように使用すべきかを修正して理解するのを手伝ってもらえますか?
修正とは、ブラウザFF、IE、ChromeでエラーなしでsetTimeoutを設定できることを意味しますが、各インスタンスのslide_config.squares値は、各スライドオブジェクトまたはデフォルト(つまりslide_default)によって設定された値と同じです。
注:最初のコードサンプルでは、slide_config.squaresの値は私が期待したものです。つまり、slideobjectまたはslide_configのデフォルトに従って設定されています。繰り返しになりますが、コードは最初のコードでGoogleChromeで正常に機能しているように見えます