禁用功能

时间:2010-01-07 22:29:40

标签: javascript jquery

我有一个我要禁用的工具提示。它来自this site,基本上设置并调用如下:

this.tooltip = function(){....}
$(document).ready(function(){
 tooltip();
});

我不想取消绑定悬停或鼠标悬停事件,因为它们也与其他效果绑定。我试图在没有成功的情况下禁用,如下所示(在页面底部):

 $(document).ready(function(){
  this.tooltip = function() {}
 })

 $(document).ready(function(){
  function tooltip() {}
 })

我错过了什么吗?

3 个答案:

答案 0 :(得分:1)

修改: 这是一个想法...尝试将你的覆盖从准备好的声明中删除。这样它应该在onReady被触发之前覆盖函数定义。

this.tooltip = function(){return false;};

因为脚本在外部文件中调用自身,所以不能正常工作,因此如果您尝试将其设置为空白函数,那么它会覆盖它,如果您之后执行它已经运行,那么当您覆盖它时已经将其事件处理程序添加到堆栈中。您可能不会在不想要工具提示的页面上包含该文件。

处理这个问题的一个简单方法是使事件处理程序命名为函数而不是匿名,然后你可以轻松地从事件堆栈中取消那些函数$('a.tooltip').unbind('click', tooltipClick);当然,更彻底的方法是将它重构为你自己的插件有删除选项或那种性质的东西。还有几个用于jQ的工具提示插件,我确定至少有一个,如果不是全部将允许禁用。

答案 1 :(得分:0)

您不需要取消绑定工具提示功能(因为它的目的只是运行一次),而是它添加到某些元素事件的匿名函数。

有一种方法可以做到这一点,只有在绑定匿名函数时才能改变原始工具提示代码以包含命名空间。

一些例子..

在工具提示源代码中有

$("a.tooltip").hover(function(e){...})

这应该是

$("a.tooltip").bind('hover.tooltip',(function(e){...});

hover旁边的.tooltip表示我们已为此函数定义了一个命名空间,现在我们可以用

解除绑定
$("a.tooltip").unbind('hover.tooltip');

答案 2 :(得分:0)

好的,我能用这个功能做到这一点。但它似乎有点hackish,可能不是最优雅的解决方案。

$(document).ready(function() {
 $(".tooltip").mouseover(function(){ $('#tooltip').remove() });
});

如果出现更好的想法,我会保持这个问题。