获取弹出窗口的DOM元素以进行jQuery操作 [英] Get DOM elements of a popup for jQuery manipulation

查看:1185
本文介绍了获取弹出窗口的DOM元素以进行jQuery操作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在创建一个弹出窗口,如下所示:

I am creating a popup as follows:

   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。此外,点击处理程序永远不会通过,原始点击处理程序也会运行。

The logOut sometimes (usually on the 1st window open) returns null. Also, the click handler never goes through and the original click handler operates.

如何覆盖弹出窗口的真实点击处理程序?

Both页面在我的网站上,所以应该没有跨网站问题..

How do I overwrite the real click handler of the popup?
Both pages are on my site, so there should be no cross site issues..

这是一个小提琴,显示了我想要做的一些事情: http://jsfiddle.net/maniator/K2B3q/

Here is a fiddle that shows a little of what I am trying to do: http://jsfiddle.net/maniator/K2B3q/

推荐答案

在Firefox 4和Chrome 11中测试并使用。检查出来。

Tested and working in Firefox 4 and 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();
    });
});

这篇关于获取弹出窗口的DOM元素以进行jQuery操作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆