2010-01-07 6 views
0

J'ai une info-bulle que je veux désactiver. Il est de this site et est essentiellement défini et appelé comme suit:Désactiver une fonction

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

Je ne veux pas délier les événements de vol stationnaire ou mouseover car ils sont liés à d'autres effets. J'ai essayé de désactiver sans succès comme suit (en bas de la page):

et

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

Est-ce que je manque quelque chose?

Répondre

1

EDIT: Voici une pensée ... essayez de prendre votre priorité sur l'instruction prête. De cette façon, il devrait remplacer la définition de la fonction avant que la fonction onReady ne soit activée.

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

Ce wont travail parce que le script lui-même appelle dans un fichier externe, donc si vous essayez d'en faire une fonction vide avant la main elle remplace, et si vous le faites après, il a déjà exécuté , donc pendant que vous le surchargez, il a déjà ajouté ses gestionnaires d'événements à la pile. Vous pourriez ne pas inclure le fichier sur les pages où vous ne voulez pas les info-bulles. Un moyen facile de gérer cela est de rendre les gestionnaires d'événements nommés fonctions au lieu d'anonymes, alors vous pouvez facilement facilement exclure ces fonctions des piles d'événements avec $('a.tooltip').unbind('click', tooltipClick); Bien sûr, la façon la plus complète est de refactoriser dans votre propre plugin avec l'option de suppression ou quelque chose de cette nature. Il y a aussi plusieurs plugins d'info-bulle pour jQ là-bas et j'en suis sûr au moins un, sinon tous permettront la désactivation.

+0

Hmmm c'est logique, mais le problème est que je ne contrôle pas les scripts en cours de chargement (c'est un site d'hébergement de guilde qui me permet d'ajouter des scripts mais je ne peux pas désactiver ce qui est déjà là). – Mottie

+0

L'ajout de 'return false' dans la fonction ne fonctionnait pas non plus = ( – Mottie

+0

Il n'abotu pas le retour false .. c'est de placer cet extrait en dehors de $ (document) .ready()' de sorte qu'il remplace la fonction tooltip avant avant que l'état prêt soit atteint – prodigitalson

0

Vous n'avez pas besoin de délier la fonction info-bulle (puisque son but est seulement d'exécuter une fois), mais les fonctions anonymes qu'il ajoute aux événements de certains éléments ..

Il y a une façon de le faire, seulement si vous pouvez modifier le code de infobulle d'origine pour inclure un espace de noms lors de la liaison des fonctions anonymes ..

quelques exemples ..

dans le code source de l'info-bulle il y a

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

cela devrait être

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

le .tooltip à côté de vol stationnaire signifie que nous avons défini un espace de noms pour cette fonction et nous pouvons maintenant délie avec

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

Cela fonctionnerait probablement, mais malheureusement je n'ai aucun contrôle sur le script de l'info-bulle, fourni à partir d'un site d'hébergement de guilde et chargé dans le cadre de la fonctionnalité de base. – Mottie

0

Ok, j'ai pu le faire avec cette fonction. Mais il semble un peu hackish et ne peut pas être la solution la plus élégante.

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

Je garderai cette question ouverte au cas où de meilleures idées apparaîtraient.

Questions connexes