2012-02-09 81 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