2017-02-09 81 views
0

我需要覆蓋特定元素的顯示功能。迄今爲止,這工作得很好。但是有一個邪惡的副作用:我的咆哮元素顯示後保持可見。控制檯中沒有日誌錯誤,其他的東西工作正常。它也沒有卡住任何地方。它顯示後再也不會隱藏。jQuery覆蓋顯示功能使PrimeFaces咆哮保持可見

這裏我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); 
      }; 
     }); 

沒有區別

+0

的[傳遞參數可能的複製着另一個JavaScript函數](http://stackoverflow.com/questions/3914557/passing-arguments-forward-to-another-javascript-function) –

+0

不能解決我的問題。在這種情況下沒有任何爭論。我只是試了一下。沒有什麼區別:( – Lule

+0

調試咆哮js並檢查隱藏被調用的位置和錯誤的地方。控制檯上的錯誤?很多事情你可以也應該嘗試/調查自己。 – Kukeltje

回答

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); 
}; 
})(); 
+0

我認爲(想)op想要在通用的jquery節目中做點什麼,並打破了低吼,但我可能是錯的(和問題然後你的回答是正確的 – Kukeltje

+0

Kukeltje是正確的,我需要overlayPanel的功能,並試圖覆蓋它,但我會嘗試做到這一點只適用於primeface overlayPanel顯示功能,並給你一個反饋那麼! – Lule

+0

它的工作方式就是這樣,但是如果你想重寫primefaces顯示 - 注意這個事實,primefac es功能被命名爲「_show」而不是「show」。 – Lule