2011-02-02 10 views
9

Utilizzo il framework jQuery Tools di Flowplayer (in particolare il plugin tooltips) in una tabella, oltre al calendario dell'interfaccia utente jQuery.jQuery Tools -> Tooltip distrugge il metodo?

Ogni riga del tavolo ha la possibilità di inserire una riga sopra e sotto di essa.

In questo modo sto clonando l'oggetto cliccato (eventi e oggetti) e inserendolo direttamente sopra o sotto.

Dopo aver aggiunto una nuova riga, aggiorno la tabella, generando nuovi ID per i miei elementi, reinizializzando il datapicker e tentando di reinizializzare la descrizione.

Sto cercando un modo per distruggerlo completamente dall'istanza e riapplicarlo.

Sto cercando qualcosa di simile al metodo datepicker('destroy').

$j($editRow).find('input.date').datepicker('destroy').datepicker({dateFormat: 'mm-dd-yy', defaultDate : defaultDateStr});

ho già tentato di:

  1. a non associare il passaggio del mouse e concentrarsi eventi: quando tooltip reinvoking, si va automaticamente per l'oggetto è stato fatto da.

  2. nasconde l'elemento DOM tooltip, rimuove l'oggetto tooltip dalla destinazione e lo riapplica. La stessa cosa accade come (1)

È possibile creare un metodo di distruzione da solo?

+0

Puoi spiegare cosa intendi per "automaticamente va per l'oggetto da cui è stato creato" quando cerchi di dissipare il suggerimento? –

+0

puoi pubblicare il codice che stai utilizzando per chiamare i tooltip e il codice che hai usato per provare a separarli? – themerlinproject

risposta

5

Ho provato il metodo di kwicher, e non poteva farlo funzionare. Anche se stavo cercando di modificare il codice minified, e non sono del tutto sicuro di aver trovato il posto giusto per fare il cambiamento.

Ho fatto, tuttavia, farlo funzionare. ValidationFailed è una classe che sto applicando a tutti i campi di input a cui sono applicati anche i tooltip.

$('.validationFailed').each(function (index) { 
    $(this).removeData('tooltip'); 
}); 

$('.tooltip').remove(); 

Ho provato questo molti modi diversi, e questo era l'unica combinazione che mi ha permesso di aggiungere i suggerimenti aggiuntivi post-removal, senza impedire le nuove descrizioni dei comandi di funzionare correttamente.

Come meglio posso dire, le maniglie di rimozione della classe del tooltip eliminano i div effettivi del tooltip, i cui eventi sono anche cablati direttamente. Il .removeData consente di reimmaginare il tooltip in futuro.

1

Se hai ancora bisogno di essa si può procedere come segue: - nel file di implementazione tooltip aggiungere la seguente funzione

destroy: function(e) { 
     tip.detach(); 
     } 

da qualche parte in:

$.extend(self, { 
... 

Ho dopo l'ultima funzione nativa .

Poi, quando si desidera rimuovere la punta, il fuoco:

$(.tip).data('tooltip').destroy(); 

Si dovrebbe fare il trucco

K

5

Sulla le tue idee e la risposta di Tom, ho scoperto che tre cose sono necessarie:

  1. Rimuovere i dati del 'tooltip' dal l'elemento di destinazione tooltip
  2. listener di eventi UNBIND dall'elemento bersaglio tooltip
  3. rimuovere l'elemento (supponendo che si sta utilizzando questo approccio tooltip per consentire HTML arbitrario nella vostra punta)

Così, questa semplice funzione dovrebbe fare il trucco. Basta passargli un oggetto jQuery contenente gli elementi di destinazione dei tooltip che vuoi distruggere.

function destroyTooltips($targets) { 
    $targets.removeData('tooltip').unbind().next('div.tooltip').remove(); 
} 
0
if($element.data('ui-tooltip')) {//if tooltip has been initialized 
     $element.tooltip('destroy'); 
    }