Javascript 为什么;开场白.$(文档).trigger(';自定义';)";它不起作用了吗?

Javascript 为什么;开场白.$(文档).trigger(';自定义';)";它不起作用了吗?,javascript,jquery,publish-subscribe,Javascript,Jquery,Publish Subscribe,我想用jQuery实现简单的发布/订阅模式。 因此,我在父页面上添加了如下代码: 父页面: $(document).bind('custom', function() { ... }); 当我在同一页面上触发时,它工作正常,如下所示: 同一页: $(document).trigger('custom'); // Working. 但当我在弹出页面上触发时,它就不起作用了 弹出页面: opener.$(document).trigger('custom'); // Not working.

我想用jQuery实现简单的发布/订阅模式。 因此,我在父页面上添加了如下代码:

父页面:

$(document).bind('custom', function() { ... });
当我在同一页面上触发时,它工作正常,如下所示:

同一页:

$(document).trigger('custom');  // Working.
但当我在弹出页面上触发时,它就不起作用了

弹出页面:

opener.$(document).trigger('custom');  // Not working.
$(opener.document).trigger('custom');  // Not working.
如果我将事件绑定到
元素,它将工作

父页面:

$('body').bind('custom', function() { ... });
弹出页面:

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

为什么绑定到
文档
在弹出窗口上不起作用?

您需要将整个
打开器.document
放入jQuery对象中。在弹出窗口中尝试以下操作:

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

正如@11684所说,让它发挥作用的答案是:

opener.$(opener.document).trigger('custom');
@Rory的答案是:

$(opener.document).trigger('custom');
无法工作,因为弹出窗口的
$
没有
opener.document
的事件处理程序

还有这个:

opener.$(document).trigger('custom');
无法工作,因为
文档
是弹出窗口的
文档
,因此它与
开场白文档
不同

最后

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

之所以有效,是因为开场白的
$
有事件处理程序,而参数(
body
)只是字符串(而不是像
document
那样的对象)。

我认为,如果从父页面执行此操作,则使用父页面中的
document
变量。如果执行
opener.$(opener.document).trigger('custom')?我已经试过了,但没用<代码>开场白。$(开场白.文档).trigger
正在工作。