0

これは、.hide() と .show() に関する事実に関する質問です。これは私のコードの単純化されたバージョンですが、一般的に説明しています。既にビルドされたコードであり、変更および追加しているため、戻ってすべてを .toggle() に変更したくありません。

ボタン 1 が常に .show() で、ボタン 2 が常に .hide() であるとします。

IFステートメントは必要ですか?IF ステートメントを使用しないことには何か意味がありますか? IF ステートメントを使用する場合、何か影響はありますか?

$('#button1').click(function() {
if (!$("#widget").is(':visible')) { 
  $('#widget').show('fast');
}
});
$('#button2').click(function() {
if ($("#widget").is(':visible')) {  
  $('#widget').hide('fast');
}
});

または、直接の変更で十分でしょうか? ::

$('#button1').click(function() {
  $('#widget').show('fast');
});

$('#button2').click(function() {
  $('#widget').hide('fast');
});

上記の IF ステートメントが使用されていない場合、潜在的な問題があると言われました。関連する潜在的な問題は何ですか?

4

2 に答える 2

2

2番目の方法はほぼ問題ありません。ただし、 「高速クリック」の問題に対処するには、jQuery の.stop()または.clearQueue()関数を検討することをお勧めします。これらの関数は、以前のアニメーションを停止して新しいアニメーションを続行します。

何かのようなもの:

$('#button1').click(function() {
    $('#widget').stop().show('fast');
});

$('#button2').click(function() {
    $('#widget').stop().hide('fast');
});

2 つの関数の大きな違いは、clearQueue がアニメーション以上のものを停止することを意図していることです (コールバック関数、メソッドのリストなど)。この場合、必要なのは .stop() だけですが、さまざまなパラメーター (.stop(false, true) ...) を有効にしてさまざまなブラウザーでテストし、各ブラウザーでどのように機能するかを確認して調整することもできます。あなたのニーズに。

于 2012-10-23T17:53:04.723 に答える
0

2番目の方法は、pstの回答で述べたように問題なく機能します。また、pstの質問に答えると、表示されたことを認識し、falseを返すだけなので、高速クリックは効果がありません。これにより、失敗を回避できます。

于 2012-10-23T17:26:18.230 に答える