1

jQuery on()onclick関数を使用して、次のようにWebサイトのアンカーのセットに関数をアタッチします。

<ul>
  <li>First <a href='#' title='delete' class="itemDelete">x</a></li>
  <li>Second <a href='http://www.repubblica.it' title='delete' class="itemDelete">x</a></li>
  <li>Third <a href='#' title='delete' class="itemDelete">x</a></li>
</ul>​

<script type="text/javascript">
$(document).on('click', '.itemDelete', function(e) {
    $(this).closest('li').remove();
    e.preventDefault();
});
</script>

次のブロックにJavaScriptコードを挿入する必要がありますか?

$(document).ready(function() {
  ...
});

はいの場合、なぜですか?

4

2 に答える 2

3

documentそのコードでは、常に存在するものを使用しているため、ドキュメントのコンテンツを完全に解析する必要はありません。2 番目の引数として渡されたセレクターは、要素を取得するためにはまったく使用されないため、dom はこれに対応する必要はありません。

$(document).ready上記の場合でないと、そもそも電話をかけることはできません。

バックグラウンドで、通常のイベント リスナーを直接アタッチしていることを理解することが重要ですdocument。セレクターが実際に行うことは、イベント伝搬パスでセレクターに一致する要素がない場合、ハンドラー コールバックが呼び出されないことだけです。そして明らかに、伝播が低レベルのリスナーによって時期尚早に停止された場合、その場合も発生しません。

于 2012-08-03T15:01:00.807 に答える
2

この場合、その必要はありません。タグは要素のHTMLの後にあるため、要素が読み込まれた後<script>にコードが実行され、DOM対応のイベントハンドラーを使用して要素が読み込まれたことを確認する必要がなくなります。

とは言うものの、私は通常、厳密に必要でない場合でも、ページ上の要素を処理するすべてのJavaScriptコードをDOM対応のイベントハンドラーに含めることを好みます。そうすれば、ページの上部や外部ファイルなど、他の場所に移動したり、他の方法で変更したりしても、壊れることはありません。

于 2012-08-03T14:59:36.897 に答える