2012-03-14 196 views
0

我新的jQuery和我有以下問題:JQuery的.load()的Javascript問題

源文件:

function handleDropEvent(event, ui) 
{ 
    var draggable = ui.draggable; 

    switch (draggable.attr('id')) 
    { 
     case "artOfBeing": 
      alert("Life is a bunch of pointless moments."); 
      break; 

     case "perfectAndroid": 
      $('#dataFrame').load('android/androidConfessions.html #androidData'); 
      break; 
    } 

    return false; 
} 

阿賈克斯應該加載下列文件,但它僅顯示<div id="androidTip">內容和Javascript完全被忽略!我該如何解決這個問題?

<div id="androidData"> 
    <div id="androidVideo" style="width:640px; height:360px; background-color:#25283c; margin-left:70px; margin-top:0px;"> 
    </div> 

    <script type="text/javascript"> 
     FlashReplace.replace("androidVideo", "thoughtOfYou/thought.swf", "flash-element-id", 640, 360, 10); 
    </script> 

    <div id="androidTip"> 
     <div><span style="font-weight:bold">"Android"</span> - An alien female incapable of breeding... Even then love gets old and dies. 
      <div id="xClose" style="float:right; margin-left:5px; cursor:pointer;">x</div> 
     </div> 
    </div> 
</div> 

非常感謝你。

回答

0

我不認爲當附加到您的文檔在HTML文件中的JS代碼將被調用。您需要從加載函數的回調中調用JS函數。

是這樣的:

$('#dataFrame').load('android/androidConfessions.html #androidData', function() { 
    FlashReplace.replace("androidVideo", "thoughtOfYou/thought.swf", "flash-element-id", 640, 360, 10); 

}); 
+0

Got it!這是工作!非常感謝。我喜歡回調,但沒有想到它。必須更仔細地閱讀JQuery書籍。 – iTEgg 2012-03-14 19:15:28

0

運行JavaScript作爲一個成功的負載,而不是試圖用JavaScript將其推入的回調。你現在擁有它的方式,JavaScript永遠不會被執行,只是輸出到DOM。

例子:

$('#result').load('android/androidConfessions.html #androidData', function() { 
    FlashReplace.replace("androidVideo", "thoughtOfYou/thought.swf", "flash-element-id", 640, 360, 10); 
}); 
+0

謝謝您的輸入。這對我自己來說很有教育意義。 – iTEgg 2012-03-14 19:46:11

0

當使用URL不具有後綴選擇表達調用.load()時,內容被傳遞到.HTML被移除腳本()之前進行。這會在腳本塊被丟棄之前執行。如果.load()被調用以附加到URL選擇表達,然而,腳本剝離出來之前DOM被更新,並因此不會執行。的兩種情況下的一個例子在下面可以看到:

在這裏,任何JavaScript加載到#A作爲文檔將成功執行的一部分。

$('#a').load('article.html'); 

但是,在以下情況下,在文檔中的腳本塊被加載到#b的被剝離出來,不執行:

$('#b').load('article.html #target');