2012-02-09 82 views
0

在我的IFRAME的父頁面上,我有一個jQuery事件來檢測IFRAME中元素的點擊。點擊此鏈接打開了一個jQuery UI的對話框:jQuery UI對話框和IFRAME - 帶'on'事件處理程序

<iframe id="my-iframe" src="page.php"> 
    <div class="edit-content"></div> 
</iframe> 

$('#my-iframe').contents().find('body').on('click', '.edit-content', function(){ 
    $('#dialog', window.parent.document).dialog(); 
}); 

(對話內容存儲在#dialog父頁上)

現在對話框本身上,我要,我要一個鏈接到「打開」事件處理程序附加到:

<a href="#" class="edit-link" id="test-1">Test</a> 

$('#dialog').on('click', $('.edit-link'), function(){ 
    alert($(this).attr("id")); 
    return false; 
}); 

然而,這沒有返回鏈接的ID,而不是它返回「對話」。

回答

0

問題解決了 - 這是我原來的代碼中的錯誤 - 它應該是:

$('#dialog').on('click', '.edit-link', function(){ 

相反的:

$('#dialog').on('click', $('.edit-link'), function(){ 
1

這引用了函數的所有者,在你的情況下這是對話框。 試試這個:

$('#dialog .edit-link').live('click', function(){ 
    alert($(this).attr("id")); 
    return false; 
}); 
+0

感謝嗨爲此,但不幸的是,它沒有拾取新創建的'.edit-link'元素。 – GSTAR 2012-02-09 16:36:51

+0

哎呀,這是我原來的代碼中的一個錯誤 - 應該是:'$('#dialog')。on('click', '.edit-link',function(){' – GSTAR 2012-02-09 16:57:55

+0

你應該使用live方法,你也需要它來拾取新創建的對象,我會更新我的代碼。 – 2012-02-09 16:58:54