2个页面 一个a.jsp  和一个 b.jsp2个页面都有一个<div class='abc'></div>
在a页面内 用window.open()打开b.jsp
a页面有 
function Hide(){
$(".abc").hide(); 
}如何在b.jsp中使用a.jsp内的  Hide(),且a.jsp内的<div class='abc'></div>不会发生任何变化求指导

解决方案 »

  1.   

    window.open()新开了一个窗口,b.jsp对应的dom跟a.jsp一点关系都没有, 所以你的要求不可能实现
      

  2.   


    2个页面不存在嵌套,b.jsp的dom当然和a.jsp无关。
    我的意思是,我要在b.jsp使用a.jsp内的某一个函数,就像2个页面都有一个class='abc'的div.既然a中已经存在控制该div的函数,我如何将控制将该页面的函数  “复制”  到b.jsp去使用. 
      

  3.   

    b.jsp中使用opener得到a.jsp的window作用域,a.jsp要想引用b.jsp,open的时候存储句柄。iframe和父页,window.open打开页面之间的引用opener["a.jsp中的函数名称"]()不过注意b.jsp调用a.jsp的方法的时候操作的实际是a.jsp的DOM对象,要想操作b.jsp的,需要存储句柄var b=window.open("b.jsp");function Hide(){
    $(b).find(".abc").hide(); 
    }
      

  4.   

    3楼的方法 我在火狐上试了下,b.jsp的<div>没有被隐藏,不知道为什么?
      

  5.   

    不是很明白,我就是想将a.jsp的某一函数放入b.jsp使用,并且只对b.jsp作用。
    如果我要在b.jsp重新定义这一函数,那还用得着这样吗?
    /***************************/
    就像,我有很多个页面,每个页面里都有一个<div class='abc'></div>
    那么这些页面里都有个方法是对这个div进行不同的操作
    当我点击该页面的div时,会window.open一个新的页面b.sjp,此页面展示的就是打开b.jsp页面内的<div class='abc'></div>
    所以,我想知道,怎么在我打开的b.jsp页面内,执行其父页面的函数,让b.jsp内的DIV和其父页面的一样。
      

  6.   

    在b.jsp增加window.opener.Hide.call(this)
      

  7.   

    哎,本来这个hode就属于子类的方法,用来 对子类做隐藏的操作,你为什么一定要放在父页, 当然我知道你放在父页就是为了子页面少写一个方法,不用每个都写, 试问你又不对父页做处理你放父页干什么?如果你非要这样做 也可以,你window.open 打开一个界面 当这个界面 做完操作后要 返回一个值 returnValue的值  给父页面的hide方面 然后你再设置对应子页面的控件隐藏的显示。
    不过我个人感觉这样做其实并不好,就各自写个自己的子页面里面就好, 相反如果是子的要设置父的某个控件隐藏还是显示,则主的就可以定义这个空方法,根据子页操作来 调用。
      

  8.   


    很感谢你的建议,不过请看清我的目的。
    我有很多页面这么一个div。每个页面都有对这个div进行不同的操作,于是我要有一个页面,是点击这些div后会打开的。其目的是详细展示所点击的div。
    但问题是打开的子页面不可能将所有页面的这类div进行函数设定,所以每打开一次就需要获取原页面控制该div方法,以此来保证子页面复制到需要详细展示的div。
    并不是说我要通过子页面去操作父页面。我仅仅是想知道,window。open打开的新页面内,如何调用父页面的函数去对子页面进行修改,而不对父页面进行任何更改。
      

  9.   

    我今天认真想了你这个问题,我觉得可以这样写:
    a.html: 
    <script>
        function Hide(e){
          $(e).hide(); 
        }
    </script>
    <div class="abc" onclick="Hide(this)">a<div>
    b.html:
    <div class="abc" onclick="opener['Hide'](e)">b</div>点击a.html的div 可以隐藏,点击b.html的div也可以隐藏。
    你也可以不传参数,在Hide()方法里这样写:
    $(win.document).find(".abc").hide();
    里面的win 为 全局活动对象 var win = window.open("b.html");
      

  10.   

    b.html 里写错了;onclick="opener['Hide'](this)"