2011-01-06 73 views
1

僅供參考,這裏是我的代碼:jQuery的load()方法的問題包含jQuery插件

[index.html的]

<script type="text/javascript" src="js/script.js"></script> 

[的script.js]

$(document).ready(function() { 
    $('#buttonEphone').click(function() { 
     $('#apDiv2').load("ePhone.html, #content"); 
    }); 
}); 

「 ePhone.html「包含一些燈箱效果。 (利用的下面的代碼)

[ePhone.html]

<script type="text/javascript" src="js/prototype.lite.js"></script> 
<script type="text/javascript" src="js/moo.fx.js"></script> 
<script type="text/javascript" src="js/litebox-1.0.js"></script> 

的Litebox插件還需要ePhone.html的BODY標籤內添加onload="initLightbox()"

從上面的代碼中,我可以將ePhone.html的內容(#content div)加載到我的index.html的我的<div>(apDiv2)中。但是,燈箱效果不再有效。 我也嘗試加載整個HTML而不是隻#內容:

$('#apDiv2').load('ePhone.html'); 

,但它仍然無法正常工作。

+0

您是否嘗試在`index.html`中使用這些腳本? – Shikiryu 2011-01-06 09:34:27

+0

實際上,我把代碼放在我的script.js中。我有這樣一行: Victorgalaxy 2011-01-06 09:35:22

回答

0

至於​​是.bind('load', handler)一個快捷方式,並沒有使用與加載到DOM中的新元素現有功能通過.bind(),請嘗試使用.live('load', handler)而不是完成任務的問題。

.live()提供了與.bind()相同的功能,還有一個額外的好處,即加載數據中的任何元素都將受到您當前使用的任何腳本的影響。

編輯

從您的評論上述關於使用<body onload="">屬性你應該知道這一點:

的。就緒()方法通常與屬性不符如果必須使用負載。 ,要麼不使用.ready(),要麼使用jQuery的.load()方法將加載事件處理程序附加到窗口或更具體的項目上,如圖像

EDIT 2

試試這個:

$('#apDiv2').live('load', 'ePhone.html, #content', function(){ 
    //Add extra stuff here if you need to 
}); 
0

在瀏覽器中,使用Javascript執行在某些事件。在頁面加載,頁面加載後,或任何定義的事件..等等..

但是,當您嘗試通過ajax在某些DIV中加載HTML,並且該HTML包含一些JS,那麼瀏覽器將不會執行該JS ,因爲JS沒有在瀏覽器的DOM中註冊。

所以,你可以做的是, 只保留ePhone.html中的HTML,並從該頁面移出所有JS腳本,並將該JS保留在index.html上。並使用live()來綁定您在ePhone.html中註冊的任何事件。

這將使其工作。

謝謝!

侯賽因

0

您可以使用getScript功能dinamically加載腳本後jquery.load功能完成。 試試這個:

$(document).ready(function() { 
$('#buttonEphone').click(function() { 
    $('#apDiv2').load("ePhone.html, #content", function(){ 

    // load complete 
    // now dynamically load the script 

    $.getScript('js/prototype.lite.js', function() { 
    $.getScript('js/moo.fx.js', function() { 
     $.getScript('js/litebox-1.0.js', function() { 
     // init lightbox here 
     }); 
    }); 
    }); 

    }); 
}); 
});