2011-02-02 19 views
9

Używam struktury jQuery Tools Flowplayer (konkretnie wtyczki podpowiedzi) w tabeli, oprócz kalendarza jQuery UI.Narzędzia jQuery -> Metoda niszczenia podpowiedzi Tooltip?

Każdy wiersz tabeli ma możliwość wstawienia wiersza nad i pod nim.

Podczas tego procesu klonuję kliknięty obiekt (zdarzenia i obiekty) i wstawiam go bezpośrednio powyżej lub poniżej.

Po dodaniu nowego wiersza odświeżam tabelę, generując nowe identyfikatory dla moich elementów, ponownie inicjalizując datepicker i próbując ponownie zainicjować etykietkę narzędzia.

Szukam sposobu, aby całkowicie go zniszczyć z instancji i ponownie go zastosować.

Szukam czegoś podobnego do metody datepicker('destroy').

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

już próbowali:

  1. aby rozwiązać ten mouseover i skupić zdarzenia: gdy reinvoking etykietka, automatycznie przechodzi do obiektu został wykonany z.

  2. ukryj element DOMtekstu narzędzia, usuń obiekt podpowiedzi z obiektu docelowego i ponownie go zastosuj. To samo dzieje się jako (1)

Czy istnieje sposób, w jaki mogę samodzielnie stworzyć metodę zniszczenia?

+0

Czy możesz wyjaśnić, co masz na myśli przez "automatycznie idzie na obiekt, z którego został wykonany" podczas próby odkrycia podpowiedzi? –

+0

Czy możesz opublikować kod, którego używasz do wywoływania podpowiedzi, oraz kod użyty do ich wypróbowania i usunięcia? – themerlinproject

Odpowiedz

5

Próbowałem metody kwicher, a nie mógł zmusić go do pracy. Chociaż próbowałem zmienić zminimalizowany kod i nie jestem do końca pewien, czy znalazłem właściwe miejsce do wprowadzenia zmiany.

Zrobiłem to jednak. ValidationFailed to klasa, którą aplikuję do wszystkich pól wejściowych, które mają również przypisane do nich podpowiedzi.

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

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

Próbowałem to kilka różnych sposobów, a to była jedyna kombinacja, która pozwoliła mi dodać dodatkowe podpowiedzi post-usunięcie, bez zapobiegania nowe podpowiedzi będzie działał prawidłowo.

Jak najlepiej mogę powiedzieć, uchwyty do obsługi podpowiedzi klasy usuwają rzeczywiste etykiety narzędzi div, których zdarzenia są również bezpośrednio nawiązywane. Opcja .removeData umożliwia ponowne wiązanie podpowiedzi w przyszłości.

1

Jeśli nadal trzeba go można zrobić w następujący sposób: - w pliku implementacji podpowiedzi dodać następującą funkcję

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

gdzieś w:

$.extend(self, { 
... 

mam po ostatniej funkcji natywnej .

wtedy, gdy chcesz usunąć cynk, ogień:

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

Należy rade

K

5

Opierając się na swoich pomysłów i Toma odpowiedź, stwierdziliśmy, że trzy rzeczy są konieczne:

  1. usunięcia danych, „tooltip” od elementu docelowego etykietka
  2. Unbind detektory zdarzeń z elementu docelowego etykietka
  3. usuń element (zakładając, że używasz tej metody podpowiedzi, aby zezwolić na dowolny kod HTML w końcówce).

Ta prosta funkcja powinna wystarczyć. Po prostu przekaż mu obiekt jQuery zawierający docelowe elementy etykiet narzędzi, które chcesz zniszczyć.

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'); 
    }