JQuery запустить функцию из дочернего окна в родительском окне - PullRequest
2 голосов
/ 04 января 2011

У меня есть всплывающее окно, и я хочу запустить функцию из родительского окна.

У ребенка у меня есть:

$(document).ready(function(){
    parent.$.fn.guestFromPop('Action');
});

У меня у родителя:

$(document).ready(function(){
    function guestFromPop(data) {
        alert(data);
    }
});

Проблема в том, что parent.$.fn.guestFromPop('Action'); Я никогда не вижу оповещения, ничегослучается.Я что-то не так делаю?

Ответы [ 4 ]

4 голосов
/ 04 января 2011

Это не объявляет функцию $.fn.guestFromPop:

$(document).ready(function(){
  function guestFromPop(data) {
    alert(data);
  }
});

... все, что она делает, это объявляет guestFromPop(), функцию, доступную только внутри этого обработчика document.ready.Вместо этого вам нужно объявить функцию, которую вы ищете:

$.fn.guestFromPop = function(data) {
  alert(data);
};

Хотя это тоже не совсем правильно, так как она не будет вызываться для элемента jQuery, вы можете захотеть что-то простое:

function guestFromPop(data) {
  alert(data);
}

вызывается:

parent.guestFromPop('Action');
1 голос
/ 16 сентября 2011
(function(){
$.fn.TestFunction=function(SampleData)
{
alert(SampleData);
};
});

// вызывается на другой родительской странице или в фрейме //

(function(){
$.fn.TestFunction("sdfsdfsfsfsd");

});
0 голосов
/ 02 октября 2012
guestFromPop = function(data) {
  alert (data)
}

звонок из iframe:

parent.guestFromPop(data);
0 голосов
/ 03 февраля 2012

У меня была такая же проблема.Догадаться.Проблема с вашим кодом в том, что вы не обращаетесь к правому окну, из которого вызывается функция.Чтобы перейти от консоли к ее родителю, вам понадобится «opener», а не «parent».

Таким образом, вместо parent.guestFromPop ('Action') вам нужно вызвать это:

$(self.window.opener.document).guestFromPop('Action');

Это должно относиться к правильной функции.Это сработало для меня!; -)

...