2011-02-02 130 views
9

我在表中使用了Flowplayer的jQuery工具框架(特別是工具提示插件),除了jQuery UI日曆。jQuery Tools - > Tooltip銷燬方法?

表的每一行都有能力在其上方和下方插入一行。

當我這樣做時,我克隆被單擊的對象(事件和對象)並將其直接插入到上面或下面。

添加新行後,我刷新表格,爲我的元素生成新的ID,重新初始化日期選擇器並嘗試重新初始化工具提示。

我正在尋找一種方法將它從實例中徹底銷燬並重新應用它。

我正在尋找類似於datepicker('destroy')方法的東西。

$j($editRow).find('input.date').datepicker('destroy').datepicker({dateFormat: 'mm-dd-yy', defaultDate : defaultDateStr});

我已經嘗試:

  1. 解除綁定鼠標懸停和焦點事件:當重新調用提示,它會自動進入它從製造的物體。

  2. 隱藏工具提示DOM元素,從目標中刪除工具提示對象,然後重新應用它。 (1)

有沒有辦法讓我自己創建一個銷燬方法?

+0

您能否解釋一下當您嘗試解除綁定工具提示時,「自動執行它的製作對象」是什麼意思? – 2011-02-08 01:19:04

回答

5

我試過kwicher的方法,並不能得到它的工作。雖然我試圖改變縮小的代碼,但我並不完全確定我找到了做出改變的正確位置。

但是,我做到了這一點。 ValidationFailed是我正在應用於所有輸入字段的類,這些輸入字段也提供了應用於它們的工具提示。

$('.validationFailed').each(function (index) { 
    $(this).removeData('tooltip'); 
}); 

$('.tooltip').remove(); 

我想這幾種不同的方式,而且這也是讓我增加額外的工具提示去除後,不妨礙新的工具提示正常工作的唯一組合。

盡我所知,tooltip類的刪除處理擺脫了實際的工具提示divs,其事件也直接連接起來。 .removeData允許未來重新綁定工具提示。

1

如果你仍然需要它,你可以做如下: - 工具提示實現文件中添加以下功能

destroy: function(e) { 
     tip.detach(); 
     } 

某處:

$.extend(self, { 
... 

我有最後的原生功能後, 。

然後,當你要刪除的提示,防火:

$(.tip).data('tooltip').destroy(); 

它應該做的伎倆

ķ

5

建立在你的想法和湯姆的回答,我發現,三件事情是必要的:

  1. 從提示目標元素從提示目標元素中刪除了「提示」數據
  2. 解除綁定事件偵聽器
  3. 刪除元素(假設您使用此工具提示方法,以允許您的提示中的任意HTML)

所以,這個簡單的函數應該做的伎倆。只需傳遞一個包含要破壞的工具提示的目標元素的jQuery對象即可。

function destroyTooltips($targets) { 
    $targets.removeData('tooltip').unbind().next('div.tooltip').remove(); 
} 
0
if($element.data('ui-tooltip')) {//if tooltip has been initialized 
     $element.tooltip('destroy'); 
    }