2010-07-08 30 views
26

tengo algo similar al siguiente código:jQuery Eliminar plugin del elemento

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

¿Hay una manera de quitar un plugin de un elemento distinto usando $($.plugin).remove()? No estoy seguro si tengo la terminología correcta, pero básicamente quiero restablecer el elemento a su estado original.

Gracias

+0

Estoy bastante seguro de que eso va a depender por completo en el plugin. Cosas como el diálogo de la interfaz de usuario jQuery envuelven todo tipo de basura alrededor de su elemento y lo mueven a un lugar diferente en el DOM, por lo que una función de "deshacer" sería bastante desafiante. – Pointy

+0

bien, gracias! Por cierto, tenía un gancho rápido en su blog http://whatthepointy.blogspot.com/ y dijo que no se puede encontrar ... –

Respuesta

12

Tendría que saber qué hace el complemento para revertir sus efectos. Muchos complementos agregan elementos adicionales al DOM, manejadores de elementos, etc. Si el complemento no crea ningún elemento adicional, es posible que simplemente pueda hacer un clone (sin datos ni eventos) y reemplazar o incluso solo unbind todos los controladores de eventos , pero eso no siempre va a ser efectivo. Sería muy dependiente del plugin en cuestión.

+1

Sí, creo que el consenso general es mirar el plugin primero. Cheers –

4

A menos que el plugin que ofrece funcionalidad, es probable que no se puede hacer tan fácilmente. Tendrá que investigar qué hace el complemento y, específicamente, deshacer esas cosas, o almacenar un clon del elemento no conectado para reemplazarlo más tarde.

+0

gracias, voy a echar un vistazo a lo que el plugin está haciendo con más detalle ... –

15

Aquí está mi solución sucia:

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

Esto funcionó perfectamente ... –

+0

¡La solución perfecta! Me faltaba la función removeData(). –

+0

pero también tenga en cuenta que removeData() eliminará cualquier atributo de datos adjunto al elemento. si sabes qué accesorios de datos está adjuntando, es mejor eliminarlos. –

Cuestiones relacionadas