从Iframe源更新Dialog的标题

时间:2011-07-10 10:33:47

标签: jquery jquery-plugins

我做了一个对话框,iframe

var $frm = $('<iframe />').attr('id','ifrmTV'), 
$dialog = $('<div />').dialog({ autoOpen: false, width: 'auto', hight: 'auto' });

然后经过一些数据处理后,我设置$ frm source并显示如下对话框:

$frm.attr('src', 'Http/WMP.htm').appendTo($dialog);
$dialog.dialog({title: 'title'}).dialog('open');      

我想知道WMP.htm代码中是否有一种方法可以更改对话框的标题。 jquery_UI使用类ui-dialog-title生成一个span,但不能从WMP.htm访问它。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您在iframe中加载的页面Http/WMP.htm也应该加载jQuery。这不是必需的,但在查找ui-dialog-title元素时会保持一致。

注意read this关于小写和大写网址。

现在,在iframe中,您可以使用window.parent访问父容器,并使用jQuery访问$('selector', window.parent.document)的任何元素。现在,您在iframe中加载的页面应该知道它拥有的对话框元素ID,因此它可以找回它。虽然您可以通过各种方式完成此操作,但我只假设您有一个用于此iframe加载Http/WMP.htm的对话框。所以,你应该能够做类似

的事情
var $frm = $('<iframe />').attr('id','ifrmTV'), 
    $dialog = $('<div />').attr('id', 'dlgTV')
                 .dialog({ autoOpen: false, width: 'auto', hight: 'auto' });

//...

$frm.attr('src', 'Http/WMP.htm').appendTo($dialog.dialog({title: 'Loading...'}));
$dialog.dialog('open'); 

在页面内WMP.htm

$('#dlgTV', parent.document).prev().find('.ui-dialog-title').html('Some title');

答案 1 :(得分:-2)

  

можноиспользоватьd3       яполучилжелаемыйрезультаттак:

你可以使用d3我得到了如下所需的结果:

d3.select(parent.document).select('span.ui-dialog-title').text('нужный текст');