2013-10-08 82 views
1

iframes有問題。問題是我有一個主頁面和菜單,用iframe加載內容。在主頁上我還有一個div「MessageBox」在一個iframe中,我在「MessageBox」中顯示變量的內容,所以我在我的主頁上有一個全屏消息。在IFRAMEiframe加載多次

比如我有按鈕,產生這樣的:

 content="<input type='button' value='OK' class='Ok' id='Ok'/>"; 
     MessageBox("Click OK", content, "child", "400", "170"); 

iframe中我有jQuery函數:

$(".Ok",window.parent.document).live("click",function(){ 
    alert("OK"); 
}); 

和一切,如果OK,只有當我在第一次上這個iframe中輸入時間。我看到alert(「OK」)和它很酷,但是當我從菜單中單擊其他iframe並再次顯示此iframe時,我看到兩次alert(「OK」),當再次單擊其他iframe並返回到此Iframe時,我看到3次警報( 「OK」)。

有人可以幫我解決這個問題嗎?有沒有iframe緩存或類似的東西?我認爲每次我打開我的iframe它被存儲在內存中,爲什麼我有很多calsses「.Ok」,當我點擊按鈕「確定」釋放點擊方法執行多次,因爲我已經在內存中存儲iframe?

請幫助:)

+0

看看這個問題:http://stackoverflow.com/questions/9047656/jquery-bind-firing-multiple-times – Bob

+0

您每次更改iframe時都將click事件處理程序分配給partent窗口源代碼,所以你最終會運行多個函數。 – Archer

+0

我試過解除('click')和die()$(「。Ok」,window.parent.document).die()。live(「click ... | $(」。Ok「,window.parent。文件).unbind('click')。live(「點擊...但它沒有幫助。 – elpasso

回答

1

的問題是,每一個要添加另一個iframe從菜單中,你在註冊新的單擊處理程序的每一個元素與'.Ok'上課時間,所以也爲每一個iframe元素,你已經加載。

編輯:要註冊僅在iframe使用.Ok元素點擊: $('.Ok').live('click', function() {...}); 沒有範圍的父窗口。 BTW:$('...').live(...)已棄用。使用.on()附加事件處理程序。

+0

jep,多數民衆贊成在 – doniyor

+0

好吧,有沒有簡單的方法來糾正呢?也許只是內容=」「; – elpasso

+0

但是當我添加onClick到按鈕時,我將不得不在主頁面添加」func「,我希望在iframe中有這個函數,有什麼解決方法嗎? – elpasso