2010-07-28 20 views

risposta

8

C'è molto di più che solo noConflict.

jQuery è una libreria intrusiva. Aggiunge una proprietà interna jQuery123 (per qualche valore casuale per istanza di 123) a ogni elemento che tocca (che è qualsiasi cosa con dati o gestori di eventi, tra le altre ragioni). In IE, anche questa proprietà viene riflessa come un attributo.

Quindi se MooTools o qualsiasi altra libreria (o addirittura un semplice metodo DOM) arriva e inizia a scherzare con quelle proprietà/attributi, o elementi di clonazione, o hacking innerHTML, è probabile che rovinino questi presunti-unici identificatori, che fanno sì che jQuery si confonda e inizi a comportarsi in modo anomalo in quanto è straordinariamente difficile eseguire il debug.

jQuery gestisce anche un po 'di codice evento per provare a far funzionare gli eventi submit/focus/blur/focusin/focusout/mouseenter/mouseleave e le bolle tra i browser. Ciò potrebbe confondere il codice di altre librerie che non lo si aspetta.

Quindi, con jQuery 1.4, si può quasi sfruttare l'utilizzo di un'altra libreria allo stesso tempo, a condizione che lavorino su elementi separati che non interagiscono tra loro. (jQuery 1.3 era anche molto più promiscuo su quali elementi si "toccavano".)

Ma in generale non consiglierei due quadri principali su una pagina.

0

Basta usare jQuery.noConflict assegnare jQuery per qualcosa di diverso $:

<script> 
    jQuery.noConflict(); 
</script> 

$ ora si riferisce a tutto ciò che si imposta su prima di avviare jQuery. jQuery è accessibile tramite l'oggetto jQuery.

2

jQuery può essere utilizzato in alcun conflitto modalità:

jQuery.noConflict();

o potrebbe usare jQuery anziché $.

jQuery('#myelement').hide();

Così in MooTools c'è un metodo document.id() che potrebbe essere utilizzato al posto di $:

document.id('myelement');

Nel caso in cui si vuole essere in grado di utilizzare un $ si può provare il frammento sotto:

(function($) { 

    $('#myelement').click(function() { 
     ... 
    }); 


})(jQuery); 

Allo stesso modo puoi usare $ da MooTools

0

Sì, ovviamente è possibile, in modalità compatibilità. Ma devi stare attento con i complementi jQuery, perché può causare mal di testa, poiché non sono programmati in modalità di compatibilità e possono causare conflitti con altri complementi di librerie. Per risolvere questo devi solo cambiare $ per jQuery nei complementi

sperare che questo aiuti.

1

Usa la modalità sicura per il dollaro in Mootools e dovresti essere ok dato che jQuery non estende i nativi.

Problemi correlati