2010-07-08 18 views
26

Mam coś podobnego do następującego kodu:jquery plugin usuń z elementu

$(a).click(function() { 
    $(element).plugin(); 
}); 

Czy istnieje sposób, aby usunąć wtyczkę z elementu innego niż używanie $($.plugin).remove()? Nie jestem pewien, czy mam poprawną terminologię, ale zasadniczo chcę zresetować element do jego oryginalnego stanu.

Dzięki

+0

jestem całkiem pewny, że będzie całkowicie zależeć od wtyczki. Rzeczy takie jak okno dialogowe interfejsu jQuery obejmują wszystkie rodzaje śmieci wokół twojego elementu i przenoszą je do innego miejsca w DOM, więc funkcja "cofnij" byłaby dość trudna. – Pointy

+0

ok, dziękuję! btw, miał szybki sagan na swoim blogu http://whatthepointy.blogspot.com/ i powiedział, że nie można go znaleźć ... –

Odpowiedz

12

Musisz wiedzieć, co robi wtyczka, aby odwrócić efekty. Wiele wtyczek dodaje dodatkowe elementy do DOM, obsługi do elementów itp. Jeśli wtyczka nie tworzy żadnych dodatkowych elementów, możesz po prostu zrobić clone (bez danych i zdarzeń) i zastąpić lub nawet po prostu unbind wszystkich programów obsługi zdarzeń , ale to nie zawsze będzie skuteczne. Byłoby bardzo zależne od danej wtyczki.

+1

Tak, myślę, że ogólny concensus jest najpierw spojrzeć na wtyczkę. Pozdrawiam –

4

Jeżeli wtyczka udostępnia tę funkcjonalność, to prawdopodobnie nie można zrobić tak łatwo. Będziesz musiał zbadać, co robi wtyczka, a konkretnie cofnąć te rzeczy - lub zapisać klon niewłączonego elementu, aby zastąpić go później.

+0

dzięki, zobaczę, co robi wtyczka bardziej szczegółowo .. –

15

Oto mój brudny rozwiązanie:

$('#myWidget,#myWidget *').unbind().removeData(); 
+2

To działało idealnie .. –

+0

Idealne rozwiązanie! Brakowało mi funkcji removeData(). –

+0

, ale także pamiętaj, że removeData() usunie atrybut "any" dołączony do elementu. jeśli wiesz, jakie rekwizyty danych załącza, lepiej jest je usunąć. –