2012-08-29 52 views
0

我使用jQuery將遠程HTML加載到DIV中,並且需要訪問其中包含的所有元素和JS。好像插入的HTML被添加並呈現正確,但元素不在DOM中。我如何訪問這些新元素?使用document.getElementById('myDiv')返回null在DIV中動態插入HTML並訪問新元素

var canvas ..在下面的腳本中返回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> 
+0

你如何添加遠程HTML?代碼片段請... – Ashirvad

+0

如果它們被渲染,它們是可訪問的。請修改您的問題並添加代碼以檢查發生了什麼 –

+0

我們需要查看您要添加到文檔中的內容以及如何添加它。 – jackwanders

回答

0

你會試圖插入HTML之前有獲取內容。
您應該在插入內容後嘗試訪問元素。即如果在插入內容後調用相同的函數,則可以獲取div中的內容。

,或者如果你要綁定喜歡點擊一些事件,後來談到了內容(在你的情況下插入的數據等),以及,你可以住綁定的事件如下

$(「div.className 「).live(」click「,function(){alert('1');})

$(」document「)。on(」div.className「,」click「,function(){警報( '1');})

+0

只對'.live()'說不。其貶值。 – iambriansreed

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')