【问题标题】:Custom Event Dynamic Action based on $(document) jQuery selector基于 $(document) jQuery 选择器的自定义事件动态操作
【发布时间】:2015-04-16 19:05:15
【问题描述】:

我一直在我的一个 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 选择器来检测绑定到文档的事件?当我尝试使用 document 的 jQuery 选择器时,动态操作不会触发。我强烈怀疑这是因为 APEX 在解析动态操作时将选择器括在引号中,使其对文档或窗口对象上的选择器无用。

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

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

【问题讨论】:

  • 我还没有尝试过 Apex 5,但是您是否尝试过 :root 作为您的 jQuery 选择器?与文档不完全相同,但可能会给您相同的行为。
  • 我已尝试将:root 作为我的选择器,并将事件绑定到document。它没有用。因此,我认为该事件不会从文档中冒出来?
  • 我的建议没有经过深思熟虑。事件从子元素冒泡到根元素,但这对您没有帮助,因为您的事件未绑定到元素,而是绑定到文档节点。

标签: javascript jquery oracle dom oracle-apex


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 谢谢。有趣的。我使用的是 Oracle Apex 4.2,而 JavaScript 表达式不是选择类型选项。我已经实现了另一种方式(将事件附加到我可以使用 jQuery 选择器的元素),但只是想玩 Devil's Advocate,因为我认为弃用一个功能可能是个坏主意,而没有完整的替代方案存在历史版本。
【解决方案2】:

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

【讨论】:

  • 很好的例子,但与问题无关。
猜你喜欢
  • 1970-01-01
  • 2011-08-08
  • 2014-04-20
  • 2015-09-20
  • 1970-01-01
  • 1970-01-01
  • 2011-11-07
  • 2012-08-28
  • 1970-01-01
相关资源
最近更新 更多