<script>
function open1(pa1,pa2,fn) //fn是要回调执行的函数
{
  $("#B").show();
  $("#B")[0].fn = fn; //这样传递
  return true;//这句不能省略
}
 
function close1(res)  //我希望res能够作为open里fn回调函数的参数
{
  $("#B").hide();
  $("#B")[0].fn(res); //这样调用
  return true;//这句不能省略
}function show(da) {
  open1("", "", function (da) {
     alert(da);
  });
}</script>
<div id="A">
  <input  type="button" value="1111111" onclick="show()"/>
</div>
<div id="B" style="display:none;">
  <input  type="button" value="222222" onclick="close1('dsaa')" />
</div>

解决方案 »

  1.   

    运行可以了。
    但是能不能扩展一下呢,就是A存在,B是后来动态添加上去的。这个如何搞,我原本发帖的时候没想到这个,我以为说动态添加的,一会我让他动态添加完成之后在绑定那些什么回调。现在弄了一下发现不是这样的。模型:
    这个是jquery mobile的框架,当一个<a>标签的href属性设置路径时,会跳到指定的页面,这个页面会以DIV的形式保存在主页面,当在打开另外一个的时候,同样会以DIV的形式保存在主页,就是这两个页面都在一个主页面,类似于iframe。
    所以我的做法是:function openWeb(ob, url, fn) {//这个函数绑定在a标签的onclick
          ob.href = url;
           return true;//点击的时候,先执行onclick然后在执行herf的属性,所以我上面说这个return 不能去掉现在的问题是:虽然两个页面是在一个主页面上的,但是这个时候,执行openWeb的时候 B页面还没有在页面上,等return之后在附加到主页上,所以如果用 $("#B")[0].fn这个时候还没有这个元素真的抱歉,我发帖的时候没考虑那么深,我以为就类似两个DIV隐藏,显示就回调的。如果按照这个情况,在openWeb的时候传递的fn能不能保存在一个top.window里面,然后打开b的时候在绑定,还是怎么样,
    这种情况还能弄么
    具体参照我另一帖:
    http://bbs.csdn.net/topics/390992945
      

  2.   

    这个又不能用 window.location.href,
    因为jquery mobile用href打开的页面会以div保留在主页面上,
    如果window.location.href重定向,就直接跳到另一个页面去了,之前那个也没了
      

  3.   

    想多了!
    如果 执行到 open1 时 $("#B") 不存在,那么你的整个思路就是错误的
    尽管 $("#B") 是动态加载的(比如通过 ajax),那么设置回调函数的动作也是在加载完成后进行的(比如 ajax 的 success 方法中)
      

  4.   

    我这样做的,我按照你上面的思路上面的代码改成:
    var fnCallBack=[]; //在主页面Default.aspx里面加一个全局变量function openWeb(ob,url,isLeave ,fn)
    {
          isLeave = isLeave==undefined ? true : isLeave;
            //先获取文件名字
            var name = url.split("/");
            name = name[name.length - 1];
            name = name.split('.');
            name = name[0];//文件名字,不带扩展
            if (url.indexOf('?') != "-1") { //带参数
                url += "&Pid=" + name + "&rMov=" + isLeave;
            } else {
                url += "?Pid=" + name + "&rMov=" + isLeave;
            }
            if ($("#" + name).length != 0) {
                ob.href = "#" + name + "?" + url.split("?")[1];
            } else {
                 ob.href = url;
            }
            top.window.fnCallBack.push(fn); //你那个传值,我把他保留在最主的页面去了
            return true;
    }function backWeb(ob,res)
    {
       $(ob).attr("data-rel", "back");
            res = res == undefined ? "" : res;
            top.window.fnCallBack.pop()(res);
            return true;
    }
      

  5.   


    这个是jquery mobile自己加载的,页面是加载完成之后才显示的,至于他什么时候加载完成,我也不知道他有什么回调方法在加载完成的。我觉得这无所谓了,因为这个页面他加载不完成,那这个页面都没显示,所以那些按钮也不存在。
    等页面加载完成之后 才出现按钮,这个时候对象也有了,调用应该也没有错了