2009-10-31 50 views
15

如何將點擊事件處理程序附加到iframe中的元素?甚至在iframe中使用jQuery的元素附加點擊處理程序

這裏是我的嘗試並不起作用:

$("#parent iframe").contents().find("a").live("click", function() { 
    alert ("test"); 
    return false; 
}); 

的iframe是在同一個域。

+1

只要主頁面和iframe來自同一個域,您的代碼就會工作。 – 2009-10-31 23:16:12

回答

11

發現問題。 LIVE在iframe內不起作用。切換到綁定工作正常。將代替手動事件委派。

+1

請注意,這是遠遠不夠的唯一的問題,你將試圖腳本一個窗口/框架與生活在一個不同的jQuery的副本。對於任何複雜的事情,您都需要在兩個框架中加載jQuery的副本。 jQuery針對方便的單窗口腳本進行了優化,而不是跨窗口腳本(這本質上更復雜,jQuery與否)。 – bobince 2009-11-01 00:42:49

0

基本上可能不是猜測內容可能來自不同的域(通常使用iFrames)。這些文章解釋了爲什麼:

iframes and cross domain security Cross-Domain Ajax Insecurity

另外,您將需要修改源代碼中的iFrame(如果你擁有控制權),或者你可以要求用戶減少他們的瀏覽器安全性(也許是可能的在內聯網上,但即使這樣也不是一個好主意)。

+0

這是在同一個域名上,但我會感謝你說它應該工作,我會再看一遍。 – Jourkey 2009-10-31 23:20:44

相關問題