2010-10-14 106 views
2

首先,父頁面和iframe託管在同一臺服務器上(我的本地主機上的WAMP),所以同一個來源策略在這裏不應該是個問題。如何將事件綁定到本地iframe中的元素?

我不能觸發器工作。我的iframe的ID爲iframe

$(window).load(function(){ 
    //iframe ad hovers 
    $('#iframe').contents().find('body div').click(function(){ 
    alert('do something here'); 
    }); 
}); 

我做錯了什麼?

+1

缺少單引號'''並且缺少分號是錯別字?除此之外,它對我來說看起來很不錯。 – jAndy 2010-10-14 14:58:58

+1

你確定iframe內容已經加載之前的JavaScript執行?請記住,父頁面可以在加載iframe頁面之前調用is_loaded。 – 2010-10-14 15:00:28

+0

我應該如何調用is_loaded()的任何鏈接/代碼?謝謝 – Haroldo 2010-10-14 15:34:33

回答

7

我不確定瀏覽器是否會將的窗口上下文中的「click」事件傳播到包含窗口。加載到的文檔是否有其自己的jQuery副本?如果是這樣,你可以試試這個:

$('#iframe').contents().$.find('body div').click(function(){ 
    alert('do something here); 
}); 

這變化使得jQuery代碼 在窗口處理該事件。

嗯,我認爲@jAndy是正確的,應該是 - 你必須確保框架中的文件已加載。試試這個:

$('#iframe').load(function() { 
    $(this).contents().find('body div').click(function() { alert("hi"); }); 
}); 
+0

不幸的是,嗯不能依靠jquery在iframe'd頁面。 – Haroldo 2010-10-14 15:34:11

+0

不管怎樣,我錯了 - 正如jAndy在他的評論中所說的那樣,這對我來說似乎工作得很好。 – Pointy 2010-10-14 15:37:26

+0

$('#iframe')。load() - 完美,謝謝Pointy! – Haroldo 2010-10-14 15:44:27

0

你的代碼沒有錯;我認爲你所做的唯一的錯誤是你要求在父頁面加載iframe的內容,這意味着在這個階段iframe尚未加載。

試試我的快速示例http://jsfiddle.net/UFM44/4/ 它與您的代碼相同,但在點擊「now」鏈接後觸發它。如果你點擊標識,你可以看到alert()信息。

+0

感謝Mouhannad,絕對看着正確的方向 – Haroldo 2010-10-14 15:43:38

相關問題