2009-12-23 5 views
3

Je suis en train de comprendre comment cluetip fonctionne réellement. J'ai une structure DOM factices sur laquelle j'ai fait des alertes pour vérifier si le bloc a été enlevé après que le bloc ('destroy') a été appelé sur l'élément d'ancrage. Cependant, le Div Cluetip semble toujours être en vie et bien. Cela me dérange vraiment ...jQuery cluetip ('détruire') ne détruit/enlève pas la pile?

Corrigez-moi si je me trompe ... AFAIK, cluetip a 1 instance dans la page Web, et il existe dans une hiérarchie de tags, c'est à dire cluetip> cluetip-outer> cluetip-inner . Il s'ajoute quelque part à la structure DOM quand il est d'abord ajouté à un élément html (dans mon cas, une ancre). Donc la question: l'appel de cluetip ('destroy') sur l'élément html enlève-t-il réellement le bloc, ou enlèverait/réinitialiserait-il une sorte de variable dans le bloc (et si oui, quelle variable)? Ou suis-je totalement hors de la piste ici?

Merci.

Répondre

3

Il ressemble à tous les détruire est fonction ne supprimer le déclencheur d'événement (lignes 28-30)

if (js == 'destroy') { 
    return this.unbind('.cluetip'); 
} 

Si vous voulez vous assurer que les données du cluetip a disparu, alors clairement vous-même:

$('#cluetip-inner').empty(); 

Mise à jour: pour répondre à votre question de voir si un élément a quelque chose lié à, je vais vous parler de quelque chose que je trouve de James Padolsey's site:

// List bound events: 
console.dir(jQuery('#elem').data('events')); 

// Log ALL handlers for ALL events: 
jQuery.each($('#elem').data('events'), function(i, event){ 
    jQuery.each(event, function(i, handler){ 
     console.log(handler.toString()); 
    }); 
}); 

* Note: le console fait référence à la console Firebug.

+0

Je veux vérifier si le déclencheur d'événement a été binded/unbinded. Comment puis-je m'y prendre? – BeraCim

2

les opérations suivantes:

$(this).cluetip('destroy'); 
$(this).remove(); 

La fonction remove() devrait également délier les événements.