jQuery工具 – >工具提示破坏方法?
除了jQuery UI日历之外,我在表中使用Flowplayer的jQuery Tools框架(特别是工具提示插件)。
表格的每一行都能够在其上方和下方插入一行。
这样做的时候,我正在克隆点击的对象(事件和对象)并将其直接插入到上方或下方。
添加新行后,我刷新表格,为我的元素生成新的id,重新初始化datepicker,并尝试重新初始化工具提示。
我正在寻找一种方法从实例中完全销毁它并重新应用它。
我正在寻找类似于datepicker('destroy')
方法的东西。
$j($editRow).find('input.date').datepicker('destroy').datepicker({dateFormat: 'mm-dd-yy', defaultDate : defaultDateStr});
我已经尝试过:
-
取消绑定鼠标hover和焦点事件:重新调用工具提示时,它会自动转到它所生成的对象。
-
隐藏工具提示DOM元素,从目标中删除工具提示对象,然后重新应用它。 同样的事情发生在(1)
我有办法自己创建一个destroy方法吗?
我尝试了kwicher的方法,但无法让它工作。 虽然我试图改变缩小的代码,但我并不完全确定我找到了做出改变的正确位置。
但是,我做到了这一点。 ValidationFailed是我应用于所有输入字段的类,这些输入字段也应用了工具提示。
$('.validationFailed').each(function (index) { $(this).removeData('tooltip'); }); $('.tooltip').remove();
我尝试了几种不同的方法,这是唯一允许我在删除后添加其他工具提示的组合,而不会阻止新的工具提示正常工作。
我可以说,工具提示类删除处理摆脱实际的工具提示div,其事件也直接连接。 .removeData允许将来重新绑定工具提示。
基于你的想法和汤姆的回答,我发现有三件事是必要的:
- 从工具提示目标元素中删除“工具提示”数据
- 从工具提示目标元素取消绑定事件侦听器
- 删除元素(假设您使用此工具提示方法允许在您的提示中使用任意HTML)
所以,这个简单的function应该可以解决问题。 只需传递一个jQuery对象,其中包含要销毁的工具提示的目标元素。
function destroyTooltips($targets) { $targets.removeData('tooltip').unbind().next('div.tooltip').remove(); }
如果您仍然需要它,您可以执行以下操作: – 在工具提示实现文件中添加以下function
destroy: function(e) { tip.detach(); }
在某处:
$.extend(self, { ...
我有最后一个本机function。
然后当你想要移除尖端时,开火:
$(.tip).data('tooltip').destroy();
它应该做的伎俩
ķ
if($element.data('ui-tooltip')) {//if tooltip has been initialized $element.tooltip('destroy'); }
也许现在为时已晚…… 😉
但在这里你可以找到’工具提示’的所有方法: http : //www.w3schools.com/bootstrap/bootstrap_ref_js_tooltip.asp
我留下了一个可以通过的小费,有同样的问题:处理不同的’工具提示’动作/ objs。