一、问题描述:如下图,在某个页面弹出一个iframe页面A,再在A弹出一个iframe页面B,需要操作这个B页面的元素

(一)图述

                                                            图1

(2)A页面的弹出方法,其中simpleDialog是封装好的JS框架方法,不主动改变页面结构

 1  $('.task_edit').live("click",function(){
 2             var id = $(this).parent().find("input").val();
 3             top.$().simpleDialog({
 4                 iframe: true,
 5                 animate: false,
 6                 modal: true,
 7                 iframeUrl: 'keyWorkTaskEdit.action?id='+id,
 8                 id: "update-pa",
 9                 title:"任务分配",
10                 buttons: {
11                     '关闭': closeU,
12                     '确定': function(){
13                         callbackForEdit();
14                     }
15                 }
16             });
17 });

 

二、页面结构分析如下

                图2 页面结构

 

三、处理方法:从图2 可以看出这弹出的两个iframe和原页面都是处于同级的,因此操作方法如下(代码片段)

关键点:在于分析页面总体结构,并找到相应iframe的父级页面即找到最顶层的document,并转化为JQuery对象——$(parent.window.document),从而操作之
//操作iframe——A
 var form=$(parent.window.document).find("#update-pa").find("#xqframe").contents().find("#taskForm");
var isCheck=allValidate(form);
//操作iframe——B
$(parent.window.document).find("#subDialog").find("#xqframe").contents().find("tbody").find("input:checkbox").each(function() {
    if ($(this).attr("checked") == true) {
    var val = $(this).parent().parent().parent().find("td:eq(1)").find('input').val();
    if (i == 0) {
            name = val;
    } else {
            name = name + "," + val;
        }
            i++;
        }
});

 

 

posted on 2012-05-10 11:50  明殇_weixue  阅读(3627)  评论(0编辑  收藏  举报