2010-01-07 66 views
0

我有一個要禁用的工具提示。距離this site和基本設置,並要求如下:禁用某個功能

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

我不想取消綁定懸停或鼠標懸停事件,因爲它們也依賴於其他的效果。我曾嘗試沒有成功禁用爲(在頁面的底部)如下:

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

我缺少的東西?

回答

1

編輯: 繼承人的想法...嘗試把你的重寫從現成的聲明中刪除。這樣,它應該在onReady被觸發之前覆蓋函數定義。

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

這不會工作,因爲腳本調用自身在外部文件,因此如果你試着讓它空白函數手則覆蓋它之前,如果你這樣做之後它已經運行,所以當你覆蓋它時,它已經將它的事件處理程序添加到堆棧。你可能不願意將文件包含在你不需要工具提示的頁面上。

一個簡單的方法來處理這個問題是使事件處理程序命名的函數,而不是匿名的,那麼你可以很容易地unbine只能從事件時,這些功能與$('a.tooltip').unbind('click', tooltipClick);棧Ofcourse更徹底的辦法是重構它以自己的插件與刪除選項或這種性質的東西。還有jQ的幾個工具提示插件,並確保至少有一個(如果不是全部的話)將允許禁用。

+0

嗯,這是有道理的,但問題是我不控制正在加載的腳本(這是一個公會託管網站,允許我添加腳本,但我不能禁用已有的)。 – Mottie 2010-01-07 22:55:13

+0

在函數內部添加'return false'也不起作用=( – Mottie 2010-01-08 06:15:17

+0

IT不能解決返回錯誤..它關於將此代碼片段放在'​​$(document).ready()'之外,以便覆蓋之前的工具提示函數在準備狀態到達之前 – prodigitalson 2010-01-08 13:27:32

0

你並不需要解除綁定的工具提示功能(因爲它的目的僅僅是運行一次),但匿名函數,它增加了一些元素的事件..

有一種方法可以做到這一點,只有當你可以改變原始代碼提示綁定匿名函數時,包括一個命名空間..

一些例子..

工具提示源代碼

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

這應該是

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

旁邊徘徊,我們定義了一個命名空間,這個功能手段.tooltip,我們現在可以

$("a.tooltip").unbind('hover.tooltip'); 
+0

這可能會起作用,但遺憾的是我無法控制工具提示腳本。它是從公會託管站點提供的,並作爲基本功能的一部分加載。 – Mottie 2010-01-07 23:09:39

0

好吧解除綁定,我能做到這一點與此功能。但它似乎有點駭人聽聞,可能不是最優雅的解決方案。

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

我會保持這個問題,以防萬一有更好的想法出現。