2

jquery スクリプトに問題があります...簡単な作業ですが、理解できない奇妙な動作がいくつかあります。

リンクをクリックすると、コンテンツが消えてから、新しいコンテンツが再び表示されるようにします。すべてのコンテンツはタグに保存されます。

これが私が使用しているものです:

$("#events_link").click(function() {
   $("#content").children(".content").fadeOut(fadetime, function() {
      $("#events").fadeIn(fadetime);
   });
   return false
});

ただし、コンテンツがフェードアウトするまで、fadeIn は待機しません。

私の完全なページはここにあります(すべてのコード/スクリプトは1ページにあります):

http://dl.dropbox.com/u/4217965/HorrorInTheHammer/index.html

何かご意見は?

4

3 に答える 3

9

これは要素に対して実行されます...そして、非表示の.content_box要素はすぐにアニメーションを終了するので、これが必要です:

$("#events_link").click(function() {
   $("#content > .content_box:visible").fadeOut(fadetime, function() {
      $("#events").fadeIn(fadetime);
   });
   return false
});

重要な変更は:visibleselectorであるため、表示されているものだけがフェードアウトし、コールバックをトリガーして次のものを表示します。

于 2010-08-24T17:52:37.430 に答える
-2

次のようなものがあるため、ページの現在のバージョンはまったく機能していないようです

$("#content").children(".content")

それ以外の

$('#content').children('.content_box')

それを修正すると、トラブルシューティングが容易になります...

編集(上記の修正が完了したため):

少なくとも Firefox 3.5 では、コールバックに関して、fadeOut 関数が文書化されているとおりに機能していないようです。あなたがおそらく望むことは、少し単純な古いjavascriptを使用して達成できると思います:

$('#content').children('.content_box').fadeOut(fadetime);
window.setTimeout(function () { $('#events').fadeIn(fadetime); }, fadetime + 100);
return false;

古いコンテンツがなくなり、新しいコンテンツがフェードインする前に実際にスペースを占有しないようにすることで、あなたが望むことを達成する可能性が高くなると思います. それがあなたのために働くかどうか私たち全員に知らせてください.

于 2010-08-24T17:21:17.473 に答える