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

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

问题描述

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

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.

如何覆盖弹出窗口的真实点击处理程序?
这两个页面都在我的网站上,所以应该没有跨站问题..

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();
    });
});

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

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