Javascript 如何在jQuery中获取PrimeFaces pfAjaxStart事件的源元素

Javascript 如何在jQuery中获取PrimeFaces pfAjaxStart事件的源元素,javascript,jquery,jsf,primefaces,Javascript,Jquery,Jsf,Primefaces,我有一个用于pfAjaxStart事件的自定义jQuery事件处理程序。我只想注册(或检查内部)这个处理程序来处理来自具有特定css类的元素的事件,例如handle ajax start。我怎样才能做到这一点 $(document).on("pfAjaxStart", function(event, xhr, options) { /* * How to perform this only for events by elements with class handle-aja

我有一个用于pfAjaxStart事件的自定义jQuery事件处理程序。我只想注册(或检查内部)这个处理程序来处理来自具有特定css类的元素的事件,例如handle ajax start。我怎样才能做到这一点

$(document).on("pfAjaxStart", function(event, xhr, options) {
    /*
     * How to perform this only for events by elements with class handle-ajax-start???
     */
    console.log("Ajax Started...");
});

使用
pfAjaxStart
,您最接近的赌注是

考虑到您还指定了
xhr
选项
,这些选项实际上在
pfAjaxStart
期间不存在(上面已修复),我相信您实际上打算挂接
pfAjaxSend
。DOM中源元素的ID随后可通过
选项获得。source
。这可能比
document.activeElement
更可靠

$(document).on("pfAjaxSend", function(event, xhr, options) {
    var $source = $(document.getElementById(options.source));
    // ...
});

事件目标始终与文档相关,因此无法知道是谁触发了ajax事件。只有全局处理程序有什么好处?在内部它被用于。对于用户来说,这只是ajax事件即将开始的标志。在其他情况下,例如ajax事件是由组件(作为目标)显式触发的,而在另一种情况下,它是代表文档(由desgin)触发的,因此您可以监听文档(全局)。根据我的经验,activeElement并不总是准确的。至于pfAjaxSend,它肯定会起作用,但在某些情况下,例如取消活动就太迟了。这取决于OP的要求。但是的,这是他能得到的最接近的东西…:)
$(document).on("pfAjaxSend", function(event, xhr, options) {
    var $source = $(document.getElementById(options.source));
    // ...
});