0

jQueryを使用してリモートHTMLをDIVにロードしており、そこに含まれるすべての要素とJSにアクセスする必要があります。挿入されたHTMLが追加されて正しくレンダリングされているように見えますが、要素はDOMにありません。これらの新しい要素にアクセスするにはどうすればよいですか?document.getElementById('myDiv')を使用するとnullが返されます

以下のスクリプトのvarcanvas..はnullを返しますが、その理由がわかりません。

<script>

function draw(){
  var canvas=document.getElementById("pdf1");
  var pdf=canvas.getContext("2d");
// other code here populates canvas.....

}

</script>

<body>
<div>
<canvas  id="pdf1" width="801" height="1041"></canvas>
</div>
</body>
<script type="application/javascript">
$(window).load(draw());
</script>
</html>
4

3 に答える 3

1
$('#new_html_wrapper').load('file.html', function(){

    // Access the new DOM elements here inside the load callback.

    $(this).on('#myDiv','click',function(){
        alert('You clicked on myDiv!');
    });

    $('#myDiv', this).css('background','red');

});

// Accessing the elements here will fail as they haven't been loaded yet.

続きを読む:http ://api.jquery.com/load/

また、使用しないでくださいdocument.getElementById('myDiv')

すでにjQueryがロードされているので、次のようにします$('#myDiv')

于 2012-08-29T17:12:31.467 に答える
0

イベントをこれらの新しい要素にバインドする必要がある場合は、.on()関数を使用してください

于 2012-08-29T17:02:46.883 に答える
0

HTMLがそこに挿入される前に、コンテンツを取得しようとしたでしょう。
コンテンツを挿入した後、要素にアクセスしてみてください。つまり、コンテンツが挿入された後に同じ関数を呼び出すと、divでコンテンツを取得できます。

または、クリックなどのイベントをバインドする場合は、後で来るコンテンツ(あなたの場合のように挿入されたデータ)でも、以下のようにイベントをライブバインドできます

$( "div.className")。live( "click"、function(){alert( '1');})
または
$( "document")。on( "div.className"、 "click"、function( ){alert( '1');})

于 2012-08-29T17:06:55.540 に答える