2012-12-12 26 views
1

我想用jQuery實現簡單的pub/sub模式。 所以我添加一些代碼這樣的父頁:

父頁面:

$(document).bind('custom', function() { ... }); 

,它的工作很好,當我觸發同一頁上是這樣的:

同一頁:

$(document).trigger('custom'); // Working. 

但是,當我在彈出頁面上觸發它,它不工作。

彈出頁面:

opener.$(document).trigger('custom'); // Not working. 
$(opener.document).trigger('custom'); // Not working. 

如果我綁定事件<body>元素,它的工作原理找到。

父頁:

$('body').bind('custom', function() { ... }); 

彈出頁:

opener.$('body').trigger('custom'); // Working. 

爲什麼結合document不工作的彈出?

+2

我認爲,因爲如果你從父頁面使用父頁面的'document'變量。 (opener.document).trigger('custom');'? – 11684

回答

2

正如@ 11684說,答案以使其工作:

opener.$(opener.document).trigger('custom'); 

的@羅裏的回答是:

$(opener.document).trigger('custom'); 

不工作,因爲popup的$沒有opener.document的事件處理程序。

這一個:

opener.$(document).trigger('custom'); 

不工作,因爲document是彈出窗口的document所以它從opener.document不同。

最後,

opener.$('body').trigger('custom'); 

工作,因爲揭幕戰的$有事件處理程序和參數(body)只是字符串(不喜歡document一個對象)。

0

您需要將整個opener.document放入一個jQuery對象中。在彈出試試這個:

$(opener.document).trigger('custom'); 
+1

打我十秒... – 11684

+0

我已經試過,但它沒有奏效。 'opener。$(opener.document).trigger'正在工作。 –

+0

我更新了問題。 –

相關問題