,弹出的DOM元素的jQuery操纵
问题描述:
我创建一个弹出如下:,弹出的DOM元素的jQuery操纵
var comet = {
popup: null,
newPopup: function(windowsname, w, h){
this.popup = window.open(windowsname, windowsname, 'width=' + w + ',height=' + h);
var self = comet;
var logOut= null;
$(this.popup.document).ready(function(){
logOut = self.popup.document.getElementById('logout');
console.log(logOut);
$(logOut).live('click', function(){
alert('HELLO');
return false;
})
})
},
some_function: function(){
//calling it here:
this.newPopup('index.php',1120,550);
}
}
的logOut
有时(通常是开放的第一窗口)返回null。此外,点击处理程序永远不会通过,并且原始点击处理程序运行。
如何覆盖弹出窗口的实际点击处理程序?
这两个网页上我的网站,所以应该不存在跨站点的问题..
这里是一个小提琴,显示了一点什么,我试图做的:http://jsfiddle.net/maniator/K2B3q/
答
测试,在Firefox 4个工作和Chrome 11. Check it out.
$(function()
{
var comet =
{
popup: null,
newPopup: function(url, w, h)
{
this.popup = window.open(url, url, 'width=' + w + ',height=' + h);
var self = this;
this.popup.onload = function()
{
var doc = this.document,
script = doc.createElement('script');
script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js';
script.onload = function()
{
function setup()
{
$('#logout').click(function() { alert('It worked!'); });
}
script = doc.createElement('script');
script.textContent = "(" + setup.toString() + ")();";
doc.body.appendChild(script);
};
doc.head.appendChild(script);
};
},
foo: function()
{
this.newPopup('http://jsbin.com/amuza3/2', 600, 400);
}
};
$('#clickme').click(function()
{
comet.foo();
});
});
@Matt,对不起,添加到我的问题。 'comet'是对象名称 – Neal 2011-05-12 21:10:02
为什么不包括你想在弹出的index.php文件本身的弹出页面上操作的JS,而不是在主文档中? – maxedison 2011-05-12 21:11:50
@maxedison,我想让主页面(创建弹出窗口)知道'logOut'被点击了 – Neal 2011-05-12 21:12:40