1

jquery を使用して、dom がロードされた直後に何かを行うには、次のように記述します。

<script>
$("#google").load(function() {
  alert('ok');
});
</script>
<img src="http://www.google.com/images/logos/ps_logo2.png" id="google" />

しかし、次のように load の代わりに ready() を使用すると、何も起こりません。

 <script>
    $("#google").ready(function() {
      alert(this);
      alert('ok');
    });
    </script>
    <img src="http://www.google.com/images/logos/ps_logo2.png" id="google" />

、それは動作しますが、ポインター「this」は $("#google") ではなく、「window」またはその他のもののようで、混乱しています〜

4

5 に答える 5

3

私が正しく理解していれば、DOM が完全にロードされた#google 後に操作する必要があります。次に、実際に使用したいのは$(document).ready(function() {//do stuff with #google});

.load()ajaxリクエストを行うために使用されます。ここでそれを読む必要があります

#google が動的に生成されるかどうかを知ることも興味深いでしょう。

ああ、2番目の例では、できませんalert(this)alert()パラメータとして文字列を受け取るだけです。

于 2011-05-19T09:13:11.477 に答える
1

最初のコードでは、要素を探しており#google、その画像が読み込まれたときに通知するように指示しています。ただし、javascript が実行される時点 (コード内の要素の上) には、要素が存在しない#googleため、イベント リスナーは何にも割り当てられません。

残念ながら、リスナー内にイベント リスナーを追加しても、DOMReady常に問題が解決するとは限りません。たとえば、画像が既にブラウザのキャッシュにある場合、#googleload イベントはの前に DOMReady発生する可能性があります。最も安全な方法は、イメージが作成された直後にリスナーをアタッチすることです。

<img src="http://www.google.com/images/logos/ps_logo2.png" id="google" />
<script type="text/javascript">

$('#google').load(function() {
   alert('ok');
});

</script>

実施例

このようにコードの途中にスクリプト ブロックを挿入することに満足できず、後でスクリプトを別の場所に延期したい場合は、いつでも$(window).load()代わりに$('#google').load(). これは と同等です。つまり、すべての外部コンテンツがロードされ<body onload="">たときに実行されます。そのため、画像が読み込まれたことはわかりますが、読み込まれた直後であるとは限りません。$(window).load()#google

于 2011-05-19T09:10:40.350 に答える
0

代わりにこれを試してください:

$(function() {
    var that = $("#google");
    alert(that);
});

$(document) このコードは、 ready()イベントによってトリガーされるため、DOM が完全に読み込まれると実行されます。

于 2011-05-19T09:09:45.403 に答える
0

以下を使用してください:

$(document).ready(function() {
   alert("The DOM has loaded");
});

.load 関数は、ajax 呼び出しをトリガーし、指定された div に応答を配置するために使用されます。

于 2011-05-19T09:11:40.053 に答える