Получить DOM-элементы всплывающего окна для манипулирования jQuery - PullRequest
4 голосов
/ 13 мая 2011

Я создаю всплывающее окно следующим образом:

   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 (обычно в первом открытом окне) возвращает ноль.Кроме того, обработчик кликов никогда не проходит, и оригинальный обработчик кликов работает.

Как переписать реальный обработчик кликов во всплывающем окне?
Обе страницы находятся на моем сайте, поэтому не должно быть перекрестного сайта.проблемы ..

Вот скрипка, которая показывает немного того, что я пытаюсь сделать: http://jsfiddle.net/maniator/K2B3q/

1 Ответ

1 голос
/ 13 мая 2011

Протестировано и работает в Firefox 4 и Chrome 11. Проверьте это.

$(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();
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...