9

除了 jQuery UI 日历之外,我还在表格中使用 Flowplayer 的 jQuery 工具框架(特别是工具提示插件)。

表格的每一行都可以在其上方和下方插入一行。

这样做时,我正在克隆单击的对象(事件和对象)并将其直接插入上方或下方。

添加新行后,我刷新表,为我的元素生成新的 id,重新初始化日期选择器,并尝试重新初始化工具提示。

我正在寻找一种从实例中完全销毁它并重新应用它的方法。

我正在寻找类似于该datepicker('destroy')方法的东西。

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

我已经尝试过:

  1. 取消绑定鼠标悬停和焦点事件:当重新调用工具提示时,它会自动转到它的对象。

  2. 隐藏 tooltip DOM 元素,从目标中移除 tooltip 对象,然后重新应用它。发生与 (1) 相同的事情

有没有办法我自己创建一个销毁方法?

4

5 回答 5

5

我尝试了 kwicher 的方法,但无法正常工作。尽管我试图更改缩小的代码,但我并不完全确定我找到了正确的位置进行更改。

但是,我确实让这个工作。ValidationFailed 是我应用于所有输入字段的类,这些输入字段也应用了工具提示。

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

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

我尝试了几种不同的方法,这是唯一允许我在删除后添加其他工具提示的组合,而不会阻止新工具提示正常工作。

据我所知,工具提示类删除处理摆脱了实际的工具提示 div,其事件也直接连接起来。.removeData 允许将来重新绑定工具提示。

于 2012-02-16T20:03:11.300 回答
5

根据您的想法和汤姆的回答,我发现三件事是必要的:

  1. 从工具提示目标元素中删除“工具提示”数据
  2. 从工具提示目标元素中取消绑定事件侦听器
  3. 删除元素(假设您正在使用此工具提示方法以允许在您的提示中使用任意 HTML)

所以,这个简单的函数应该可以解决问题。只需传递一个 jQuery 对象,其中包含您要销毁的工具提示的目标元素。

function destroyTooltips($targets) { 
    $targets.removeData('tooltip').unbind().next('div.tooltip').remove();
}
于 2013-02-14T20:27:36.413 回答
1

如果你仍然需要它,你可以这样做: - 在工具提示实现文件中添加以下函数

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

在某处:

$.extend(self, {
...

我在最后一个本机功能之后。

然后当你想移除尖端时,开火:

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

它应该可以解决问题

ķ

于 2011-05-08T23:01:58.557 回答
0
   if($element.data('ui-tooltip')) {//if tooltip has been initialized
       $element.tooltip('destroy');
   }
于 2016-03-30T03:03:24.380 回答
-1

也许为时已晚...... ;-)
但在这里你可以找到“工具提示”的所有方法:http: //www.w3schools.com/bootstrap/bootstrap_ref_js_tooltip.asp

我将提示留给可能经过的人,遇到同样的问题:处理不同的“工具提示”动作/对象。

于 2016-03-24T03:33:04.077 回答