1

Ready ハンドラーの外で jQuery を使用するコードを読みましたが、この方法で使用する場合の欠点は何ですか? なんらかの理由で、このようにコーディングされていることに不快感を覚えます。

ASP.NET MVC ビューからのインライン スクリプト:

<script type="text/javascript">
    function foo() {
        if ($("#checkAll").attr("checked")) {
            $(".setColumns").attr("checked", true);
        }
        else {
            $(".setColumns").attr("checked", false);
        }

    }
</script>
4

3 に答える 3

6

デメリットは特にありません。DOM 要素を操作する前に、その要素が読み込まれるのを待つ必要があるだけです。たとえば、次のようなコードがあるとします。

<script type="text/javascript">
  console.log($('#el').html());
</script>

<div id="el">Text</div>

divがまだロードされていないため、関数は値を返しません。

于 2013-10-22T16:22:24.837 に答える
1

そうではない。一部の人々がハンドラー内で実行する唯一の理由document.readyは、その時点でDOM treeが完全にロードされ、クエリが正しい結果を返すことを確認できるからです。

ただし、スクリプト タグをすべての要素の下に配置すると、通常はこれで問題が発生することはありません。

于 2013-10-22T16:22:15.750 に答える
0

DOM Ready ハンドラー内で jQuery を使用する理由は、要素が存在する場合にのみイベント バインディングが機能するためです。DOM の準備ができていない場合、要素が存在しない可能性があり、したがってイベントがバインドされない可能性があります。

これは、セレクターを使用せずにイベントを動的に読み込まれたコンテンツにバインドしようとするときに直面する問題と同じ.on()です。たとえば、要素が最初に存在しない場合、イベントはそれにバインドされません。

p/s: もちろん、ハンドラの外側で自由に関数を定義できます。

于 2013-10-22T16:25:04.617 に答える