基于 $(document) jQuery 选择器的自定义事件动态操作

Dru*_*beg 5 javascript oracle jquery dom oracle-apex

我一直在我的 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 选择器或 JavaScript 表达式而不是 DOM 对象。

我的问题是,如何使用 jQuery 选择器来检测绑定到文档的事件?当我尝试使用 jQuery 选择器时document,不会触发动态操作。我强烈怀疑这是因为 APEX 在解析动态操作时将选择器用引号括起来,使其对文档或窗口对象上的选择器无用。

我已经知道在标准的 jQuery 世界中,我只会使用$(document).

在此处输入图片说明

我已经知道我可以将事件绑定到不同的 DOM 元素。我对此不感兴趣。我对绑定到文档特别感兴趣。

Bac*_*acs 4

jQuery 选择器返回元素节点。您的事件绑定到文档节点,因此无法使用 jQuery 选择器来获取它。$(document)严格来说不是选择器。我相信$(":root").parent()会返回document对象,但这对您没有帮助,因为 Oracle 只允许您使用选择器,而不是方法。

Oracle 早些时候就我的 Apex 5 工作区回复了我,所以我一直在玩。解决方案在您引用的文档中。您不能在动态操作的选择类型中使用 jQuery 选择器,但您可以简单地使用 Javascript 表达式,其值是:document

我通过创建一个指向 URL 的按钮对此进行了测试:

javascript:apex.event.trigger(document,'testEvent');
Run Code Online (Sandbox Code Playgroud)

我创建了一个响应自定义事件testEvent、选择类型Javascript Expression、表达式值的动态操作document。它工作正常,并且该按钮现在通过在文档中处理的自定义事件触发警报。