two - jquery.noconflict() example
Facebook Connect, jQuery UI y jQuery.noConflict() (1)
Intento crear una página en mi sitio web personal que utilice jQuery
e implemente Facebook Connect
.
Desafortunadamente, la Facebook client API
usa $ token
, lo que significa que tengo que llamar a jQuery.noConflict()
Desafortunadamente, desafortunadamente, descubrí que por alguna razón loca y, como señala Rick Strahl, jQuery UI no respeta noConlict (). En absoluto. De hecho, si miras el código fuente, hay $
s por todas partes.
Realmente quiero poder usar jQuery UI; específicamente, el componente dialog()
y el que se puede draggable
sería muy agradable, pero aún más, no quiero tener que editar manualmente, probar y mantener - mi propia copia de cualquier parte de jQuery UI.
Este es el más reciente de una serie de yaks que he tenido que afeitarme, lo que me tiene a mi ingenio. ¿Alguna sugerencia? ¡Ayuda!
La publicación a la que has hecho referencia es bastante antigua y está desactualizada. La versión 1.0
de jQuery UI
tenía este problema en un par de archivos y se solucionó tan pronto como se informó.
Toda la interfaz de usuario de jQuery está envuelta en un closure
que se transfiere en jQuery como $
y, por lo tanto, puede usar $ internamente, mientras que $ se usa para algo externo.
Desde http://docs.jquery.com/Using_jQuery_with_Other_Libraries#Referencing_Magic_-_Shortcuts_for_jQuery
Use la siguiente técnica, que le permite usar $ dentro de un bloque de código sin sobrescribir permanentemente $:
(function($) { /* some code that uses $ */ })(jQuery)
Nota: Si usa esta técnica, aún puede usar Prototype a través de la window.$
Eg, window.$(''some_element_id'')
. Cualquier función fuera de su cierre que haga referencia a $
invocará a Prototype, incluso si se llama desde dentro de su cierre.
Es por eso que verá $
dentro de los archivos de la interfaz de usuario jQuery, pero tenga la seguridad de que cualquier versión reciente de jQuery UI (1.5+)
es completamente compatible con jQuery.noConflict()