Javascript 为什么;开场白.$(文档).trigger(';自定义';)";它不起作用了吗?
我想用jQuery实现简单的发布/订阅模式。 因此,我在父页面上添加了如下代码: 父页面: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.
$(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
正在工作。