日期:2014-05-16  浏览次数:20511 次

问各路大神一个简单的问题
2个页面 一个a.jsp  和一个 b.jsp

2个页面都有一个<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>不会发生任何变化

求指导

------解决方案--------------------
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(); 
}

------解决方案--------------------
我今天认真想了你这个问题,我觉得可以这样写:
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");