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

Javascript 基于$(文档)jQuery选择器的自定义事件动态操作,javascript,jquery,oracle,dom,oracle-apex,Javascript,Jquery,Oracle,Dom,Oracle Apex,在我的一个Oracle Apex页面中,我一直在使用基于自定义事件的动态操作。我将事件绑定到文档,然后使用“DOM对象”选择类型(文档)来指定事件的上下文 这在Apex 4.2中起作用,但我刚刚在Apex 5中遇到了这一点: 5.10基于DOM对象的动态操作的弃用 基于DOM对象的动态操作已被弃用。换衣服 使用jQuery选择器或JavaScript表达式的动态操作 而不是DOM对象 我的问题是,如何使用jQuery选择器来检测绑定到文档的事件?当我尝试使用文档的jQuery选择器时,动态操

在我的一个Oracle Apex页面中,我一直在使用基于自定义事件的动态操作。我将事件绑定到文档,然后使用“DOM对象”选择类型(文档)来指定事件的上下文

这在Apex 4.2中起作用,但我刚刚在Apex 5中遇到了这一点:

5.10基于DOM对象的动态操作的弃用

基于DOM对象的动态操作已被弃用。换衣服 使用jQuery选择器或JavaScript表达式的动态操作 而不是DOM对象

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

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


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

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

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

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

javascript:apex.event.trigger(document,'testEvent');

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

简短示例:动态操作自定义事件如何放置(oracle apex 18.1)到刷新交互式报告部分:


我还没有尝试过Apex 5,但您是否尝试过将
:root
作为jQuery选择器?与文档不完全相同,但可能会给您提供相同的行为。我已尝试使用
:root
作为选择器,将事件绑定到
文档
。它不起作用。因此,我认为该事件不会从文件中冒出来?我的建议没有经过深思熟虑。事件从子元素一直冒泡到根元素,但这对您没有帮助,因为您的事件没有绑定到元素,而是绑定到文档节点。谢谢。有趣。我使用的是Oracle Apex 4.2,JavaScript表达式不是选择类型选项。我已经用另一种方式实现了这一点(将事件附加到可以使用jQuery选择器的元素上),但我只是想扮演魔鬼代言人的角色,因为我认为在历史版本中不存在完整的替代方案的情况下弃用某个功能可能不是一个好主意。这是一个很好的示例,但与问题无关。