我想用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
不能用于弹出窗口?
答案 0 :(得分:2)
正如@ 11684所说,让它成功的答案是:
opener.$(opener.document).trigger('custom');
@Rory的回答:
$(opener.document).trigger('custom');
无效,因为弹出窗口的$
没有opener.document
的事件处理程序。
这一个:
opener.$(document).trigger('custom');
无效,因为document
是弹出的document
,因此它与opener.document
不同。
最后,
opener.$('body').trigger('custom');
正在运行,因为开启者的$
有事件处理程序,而参数(body
)只是字符串(不是document
之类的对象)。
答案 1 :(得分:0)
您需要将整个opener.document
放入jQuery对象中。在弹出窗口中尝试这个:
$(opener.document).trigger('custom');