2013-10-14 73 views
2

我該如何做這樣的事情?我需要完全禁用這個小部件,這意味着所有的實例都應該被禁用,並且在禁用之後可以創建NO MORE實例。我試圖尋找,但沒有出現。完全禁用Jquery UI小部件

將不勝感激任何幫助。

編輯:

一個更生動的例子。

說,我放在三個要素我控件的三個實例。然後我想關閉我的部件。我調用一個靜態方法倒胃口,從而導致 一)要禁用所有的工作情況 b)禁止被創建的窗口小部件的任何其他情況下,如果他們後來通過AJAX叫即 然後我想讓它再工作,所以我調用turnOn()。

我的小部件是一個提示pugin,所以如果用戶切換提示關閉,他們應該在任何地方關掉,並且應用程序中的某些地方仍然在異步加載頁面的提示部分。

這幾乎是我需要做的。

+0

爲什麼要加載它呢?如果你不需要特定的小部件,你可以下載沒有這個小部件的jQuery UI的編譯版本:http://download.jqueryui.com/download如果這不起作用,只需用一個空對象覆蓋小部件:'' $ .widget(「ui.accordion」,{});' – feeela

+0

@feela不,那不是。我需要那個小部件,我只是需要在它關閉之後纔開始工作,直到它打開。我寫了這個小部件。 – nainy

+0

「我只是需要在它關閉之後纔開始工作,直到它打開。」您想在關閉時使用小部件,但不想在打開時使用小部件?這是無稽之談。如果你禁用了一個小部件,你不能再使用它了。如果你想限制小部件只有一個實例,你需要實現[單例模式](http://en.wikipedia.org/wiki/Singleton_pattern),這對jQuery插件來說不是很常見,因爲那些應該經常工作作爲用戶包括他們。請描述你的目標/任務是什麼,並編輯你的問題,而不是在評論中寫下這些細節。 – feeela

回答

1

答案取決於如果你的部件是顯而易見的,當未被激活 - 例如,如果它是一個「暗示」型工具提示,顯示懸停那麼所有你需要做的就是不顯示工具提示時,它的無效。但是,如果它還添加了格式以顯示提示的位置,則還需要撤消該提示。

讓我們先看一個簡單的例子 - 假設我們有一個簡單的小部件filler,當鼠標懸停在元素上方時,它只添加一個類(filled)。這時正好有一個變量在全局範圍:

enableFiller = true; 

然後檢查你的小工具:

$.widget("spacedog.filler", { 

    _create: function() { 
     var progress = this.options.value + "%"; 
     this.element.hover(
      function() { 
       if (enableFiller) { 
        $(this).addClass("filled"); 
       } 
      }, 
      function() { 
       $(this).removeClass("filled"); 
      } 
     ); 
    } 

}); 

Fiddle

請注意,我不檢查removeClass中的標誌,因爲當鼠標位於小部件上時可能會禁用小部件,並且您可能不希望懸停顏色意外'粘在'上。

從那裏,它是很容易擴展到你的widget改變元件即使在關機的情況下。我會做的邏輯僞代碼:

  • 在創建小部件添加base-widget類元素(即使未激活)
  • 如果小部件上添加active-widget類,並盡一切需要

  • 要關閉從所有基礎小部件中刪除active-widget類:$(".base-widget").removeClass('active-widget')。您可能還需要對所有元素進行一些其他更改 - 但它們很容易找到。

  • 要,因爲它使用全局變量作爲標誌打開添加active-widget類背部和調整一切

您可以嵌入所述開啓/關斷功能到小工具,只要。看到這個答案的其他選項來存儲全球:How to declare a global variable in JavaScript?

如果你卡住你可以發佈(簡化版本)的小部件代碼和你迄今爲止嘗試過的,有人可能會幫助進一步。

+0

謝謝,我正在爲此準備。 – nainy