あなたのmootoolsは基本的に正しいですが、スクリプトが正しく機能するようにいくつかの重要な項目がありません。私は、以下の作業バージョンを貼り付け、その後、いくつかのコメントをした:
var slide = new Fx.Slide($("error"));
slide.slideOut('horizontal').chain(function() {
$('error').set('text', message); this.callChain(); //NOTE
}).chain(function() {
this.slideIn('horizontal');
}).chain(function() {
this.slideOut.delay(3000, this, 'horizontal'); //NOTE
});
- お知らせthis.callChain() 3行目に。これがなかったのは が何かを見ているのを止めていたことでした。チェーンへのご 引数は()のFxのメソッドの 1が含まれていない場合 FxのクラスがcallChain() メソッドが内部シーケンス内の次の のステップを開始するために使用しますが、、callChainは()いわゆるない 、あります手動で を実行する必要があります。
- 遅延の呼び出しが間違った場所にありました。 Delay()は、適用されている関数の実行を遅らせ、チェーンにポーズを挿入しません。したがって、エラーメッセージを3秒間表示するには、遅くしたいものであるため、最後の関数呼び出しに遅延を追加する必要があります。
- 遅延呼び出しが正しくありませんでした。遅延は関数の戻り値ではなく関数に適用されるため、上記のDimitarの提案です。詳細については、functionをmootoolsのコアドキュメントで参照してください。
- そのサウンドでは、ファイヤーバグはインストールされていません。これは、あなたのコードがマージンとテキストを変更することを見つけるためにDOMを探索することができましたが、それ以降は何も起こりません。 Firebugのは超便利なので、できるだけ早く
- 私のソリューション(MooToolsは1.3)以下であり、基本的に示唆されたものディミタールrelfectsそれをインストール:
$('error').set('slide', {
mode: 'horizontal'
}).get('slide').slideOut().chain(function() {
$('error').set('text', message); this.slideIn();
}, function() {
this.slideOut.delay(3000, this);
});
はそれが
は、あなたがエラーにあなたを投稿することができますホープ持っている? – Colum
現在、エラーメッセージは表示されませんが、コードは機能しません。何も表示されていません:( – Teiv
おそらく、最初のチェーンコールバックでFxチェインディングが実行されないので、彼のチェーンは機能しません。私は 'this.slideOut.delay(2000、this);' http://www.jsfiddle.net/dimitar/SA5e8/4/ - しかし、私はあなたに警告しています、私はfx.slideを使用していないので間違っているかもしれません。アリウスを待つか、それをリファクタリングすることを検討してください。また、onCompleteはFxの拡張機能として動作します –