2012-10-09 23 views
0

jQuery工具的疊加層是一個很好的顯示div的webhelper。通常,我們建議在jquery ready函數中註冊疊加層。它在我身邊很好。當我嘗試多次註冊時,找不到jQuery工具「疊加」

現在我想立即註冊疊加層。我的意思是:

  1. 我創建了一個div,用於加載我的內容。
  2. 然後我使用新創建的div來註冊疊加層。
  3. 最後一件事是觸發事件。

下面是我的示例代碼:

<pre><code> 

function RegisterOverlay(divId) { 
    $("#" + divId).overlay({ 
     mask: { 
      color: '#789', 
      loadSpeed: 200, 
      opacity: 0.7 
     }, 
     load: true, 
     onBeforeLoad: function() { 
      document.getElementById(divId).style.width = overlayConf.width; 
      document.getElementById(divId).style.height = overlayConf.height; 
      this.getConf().top = overlayConf.top; 
      this.getConf().oneInstance = true; //overlayConf.oneInstance; 
      this.getConf().closeOnClick = overlayConf.closeOnClick; 
      this.getConf().closeOnEsc = overlayConf.closeOnEsc; 
      this.getConf().top = overlayConf.top; 
      this.getConf().effect = overlayConf.effect; 
      this.getConf().fixed = overlayConf.fixed; 
      this.getConf().speed = overlayConf.speed; 
      this.getConf().mask.color = overlayConf.Mask.color; 
      this.getConf().mask.loadSpeed = overlayConf.Mask.loadSpeed; 
      this.getConf().mask.opacity = overlayConf.Mask.opacity; 
      this.getConf().mask.colseOnEsc = overlayConf.Mask.colseOnEsc; 
      this.getConf().mask.colseOnClick = overlayConf.Mask.colseOnClick; 
      var wrap = this.getOverlay().find(".contentWrap"); 
      wrap.load(overlayConf.url); 
     }, 
     onClose: function() { 
      var overlayAll = document.getElementById("overlayAll"); 
      overlayAll.removeChild(document.getElementById(divId)); 
     } 
    }); 
} 

function ParentOverlay(conf, divId) { 
    overlayConf = conf; 
    CreateDiv(divId);//create a div based on a given id 
    RegisterOverlay(divId);// 
} 

上面的代碼託管父頁面上,讓每一個孩子頁面可以調用ParentOverlay功能與一些參數。對不起,我可憐的英語,子頁面託管在iframe中。該框架是否會導致以下問題?

我的問題:

有一個非常小的頁面,我有三個按鈕。點擊它們中的任何一個都會觸發具有不同段落的ParentOverlay。

成功加載頁面後,單擊第一個按鈕,按預期AOK一切完成,然後關閉疊加層,但之後嘗試再次單擊三個按鈕之一。錯誤來了:
對象不支持屬性或方法 '覆蓋'

這發生在我嘗試註冊覆蓋:

$( 「#」 + DIVID)。覆蓋(...

順便說一句,有沒有錯按鈕和這有沒有關係我點擊按鈕的順序。

很簡單:首先點擊確定。然後都吸。

我打了這個,我發現如果我只是硬編碼三個按鈕的三個div,並在jquery ready函數中註冊三個覆蓋。無論多少次點擊按鈕,都可以。但這是一個我無法理解的解決方案。我想在飛行中重新使用代碼。

我也嘗試將load屬性設置爲false。這是沒有道理的。

現在,我真的不知道該怎麼做,該怎麼辦。也許有一些特殊的設置,但我還不知道。

這裏有人可以跟我分享一些經驗給我一點線索。

任何幫助,非常感謝。

+0

BTW overlayConf是一個全局變量是一個js對象,幷包含一些覆蓋值。我不認爲這與我的意志有關。 –

回答

0

問題已解決。覆蓋或jQuery沒有任何問題。但是,我犯了一個愚蠢的錯誤,我加載jquery.js兩次,這使得jquery的擴展函數的機制失敗。

然後當$(「#」 + DIVID).overlay(),錯誤出現:對象不支持屬性或方法「覆蓋」

相關問題