我一直在我的Oracle Apex页面中使用基于自定义事件的动态操作。我将我的事件绑定到文档,然后使用“DOM对象”选择类型(文档)以指定事件的上下文。
这适用于Apex 4.2,但我刚刚遇到了与Apex 5相关的内容:
https://docs.oracle.com/cd/E59726_01/doc.50/e39143/toc.htm#BAJDAGJG
5.10基于DOM对象的动态操作的弃用
不推荐使用基于DOM对象的动态操作。改变你的 使用jQuery Selector或JavaScript Expression的动态操作 而不是DOM对象。
我的问题是,如何使用jQuery选择器来检测绑定到文档的事件?当我尝试使用document
的jQuery选择器时,动态操作不会触发。我强烈怀疑这是因为APEX在解析动态操作时将选择器包装在引号中,使得它对文档或窗口对象上的选择器无效。
我已经意识到在标准的jQuery世界中我只会使用$(document)
。
我已经知道我可以将事件绑定到不同的DOM元素。我对此不感兴趣。我特别感兴趣的是绑定到文档。
答案 0 :(得分:2)
jQuery选择器返回元素节点。您的事件绑定到文档节点,因此无法使用jQuery选择器获取它。 $(document)
严格来说不是选择器。我相信$(":root").parent()
会返回document
对象,但这对您没有帮助,因为Oracle只允许您使用选择器,而不是方法。
Oracle早些时候用我的Apex 5工作区回复了我,所以我一直在玩游戏。解决方案在您引用的文档中。您无法在动态操作的选择类型中使用jQuery选择器,但您只需使用Javascript表达式,其值为:document
我通过创建一个指向URL的按钮来测试它:
javascript:apex.event.trigger(document,'testEvent');
我创建了一个动态操作,响应自定义事件testEvent
,选择类型Javascript Expression
,表达式值document
。它工作正常,按钮现在通过文档处理的自定义事件触发警报。
答案 1 :(得分:0)