0
if( $("div:last").is(":visible") ) {
    $("p").css("color", "red");
}

スクリプトが正しく動作しないのはなぜですか?

http://jsfiddle.net/8Rrm2/8/

4

1 に答える 1

1

スクリプトは、実行時に可視かどうかのみをチェックします。表示されているかどうかはチェックしませ。そのため、ユーザーが右矢印キーを使用して表示すると、スクリプトは既に通過しており、赤くならないままです。そのロジックをイベント ハンドラーに移動する必要があります。

これが実用的なフィドルです。私がしたのは、あなたのロジックを切り取って貼り付けただけです。

これで、ユーザーが矢印キーを押すたびに、ボタンが更新され、適切に色が変更されます。

また、参考までに、KnockoutJSにはモデル バインディング用の素晴らしいツールがいくつかあります。スクリプトをほとんど記述しなくても、モデルとビューモデルを相互に自動的に更新できます。矢印キーはビューモデルの値を更新し、ビューに変更を自動的に作成します。調べる価値があり、彼らのチュートリアルはとても楽しいです。

興味がある場合に備えて、Knockout で動作するように変更されたスクリプトの例を次に示します。この例では、コードが少ないわけではありませんが、例外的なケース」を読んで処理するのが少しきれいだと思います。たとえば、値 2、5、および 7 で赤くしたい場合は、 という 1 つの関数を変更するだけで済みますiAmRed

于 2012-08-07T12:19:29.723 に答える