2016-08-03 30 views
0

我有一个非常简单的页面,我从中显示一些缩略图,并且我想单击它们以显示放大的图像。window.opener中的变量未定义

所以我对象类“.PIC”设置点击功能在主页面:

$(".pic").click(function() { 
    var img_data = {}; 
    img_data.img_name= $(this).attr("src"); 
    img_data.img_caption= $(this).attr("alt"); 
    var img_win=window.open("apri_foto.html","_blank","height=600"); 
}); 

,这是代码到子窗口

$(document).ready(function() { 
    var data=window.opener.img_data; 
    alert (data); 
}); 

问题现在是在子窗口中变量是未定义的。 我也尝试过反面,即从父目录设置,但它不起作用。我现在很容易,但我真的不明白我错在哪里。为了预测这个疑问,打开的页面来自同一个域(它位于同一个文件夹中)。 你能帮我吗?

回答

0

你的问题是img_data变量的范围:它是本地的。你需要把它放在全局范围内,否则当点击处理程序退出时它会被销毁。这意味着你需要定义它的任何功能外:

var img_data = {}; 

$(".pic").click(function() { 
    img_data.img_name= $(this).attr("src"); 
    img_data.img_caption= $(this).attr("alt"); 
    var img_win=window.open("apri_foto.html","_blank","height=600"); 
}); 

More about scope