在jQuery中覆盖show功能使PrimeFaces咆哮保持可见

时间:2017-02-09 11:06:21

标签: jquery primefaces growl

我需要覆盖特定元素的show函数。这到目前为止工作正常。但是有一个邪恶的副作用:我的咆哮元素在它显示之后保持可见。控制台中没有日志错误,其他东西工作正常。它也没有卡在任何地方。它显示后再也不会再隐藏了。

这是我的jQuery函数:

jQuery(function($) {

            jQuery.fn.oldshow = jQuery.fn.show;

            jQuery.fn.show = function() {
                //Use old function
                return jQuery(this).oldshow();
            };
        });

这里是咆哮元素:

  <p:growl id="growl" showDetail="true" />

没有jQuery函数,它按预期工作并再次隐藏。

获得一些tipps或解决方案会很棒。

我已经尝试将其替换为:

jQuery(function($) {

            var oldshow = $.fn.show;

            $.fn.show = function(args) {
                var t = $(this);
                return oldshow.apply(t, arguments);
            };
        });

没有区别

1 个答案:

答案 0 :(得分:0)

覆盖primefaces函数而不是jquery函数

PrimeFaces.widget.Growl.prototype.show = (function() {
 var oldFunction = PrimeFaces.widget.Growl.prototype.show;
 return function() {
    //some logic

    //use old function
    return oldFunction.apply(this, arguments);
 };
})();