2009-03-07 10 views
0

これは私にとってとても難しいようで、ここでは簡単なものを見落としていると思います。 見つけてもらえますか?click()関数内のアニメーションキューからtrue/falseを返すにはどうすればよいですか?

基本的には、状況がこの (名前は重要ではありません変数は大文字で命名されている)である。

$('a').filter('somecriteria').each(function() { 
    var self = $(this); 
    self.click(function() { 
     B.animate({ something: somevalue }, { duration: "fast", complete: function(){ 
       return true; // <--- see notes below 
      } 
     }); 
     return false; 
    }); 
}); 

注: どのように私はこれはから送信されたreturnことreturnさせることができますclick()のように、animate()が完全に完了した後にのみ新しいページに移動します(実際のコードでは、3つのanimate()が連鎖しています)。 アニメーションが途切れ、新しいページが途中で読み込まれるため、これを行う必要があります。アニメーションは、アニメーションが実際に終了するまで、false(false)がclick()から送信されたときに完全な効果が得られます。

リンクのhref属性をキャプチャし、return trueの代わりにwindow.location = capturedlinkを実行しようとしました。 これはうまくいきますが、可能であれば、セキュリティ上の理由により場所の変更が無効になっている人がいるため、可能な場合は避けたいと考えています。

アニメーションの途中で新しいURLにjQueryを変更する別の方法がありますか?

ありがとう、この質問をチェックしてください。

アンドレは

答えて

4

私はあなたが欲しいものを行うための最も明白な方法だろうhref方法をキャプチャ怖いです。私は、次の操作を実行すると、セキュリティ設定で無効になっ更衣場所という人々を回避するかどうかわからないけど、あなたはそれを試みることができる:

$('a').filter('somecriteria').each(function() { 
    var self = $(this); 
    self.click(function() { 
     if(self.hasClass('animated')) return true; // return true if already animated 
     B.animate({ something: somevalue }, { duration: "fast", complete: function(){ 
       self.addClass('animated').click(); // fire the click event 
      } 
     }); 
     return false; 
    }); 
}); 
+0

私は、これは理論的には、ステータスクラスを仕事とaddindべきであると見ることができることはその巧妙なトリックです私は早期に考えることができませんでした。しかし、どうにかしてclick()イベントが発生しません。私は自分自身が本当にA要素であることを記録することで確かめました。答える時間をとってくれてありがとう。とても有難い! :) – andreb

+0

もしself.click(); did not try self.trigger( 'クリック');私はそれが違いを生むべきだとは思わない。私はこれを自分自身で試してみて、何が起きているのかを見てみよう... –

+0

それは、自己が間違った種類のオブジェクトであることと関係していると思います...それはただの推測です。私は完全なソースを投稿することができますが、ページがまだ生きていないので、許可されていません。 'console.debug("%o "、self)'はFirebugで '' a [index.html] 'を返します。だから、jQueryのセットはclick()のために十分なはずです... – andreb

関連する問題