2010-04-25 7 views

risposta

3

Sarà rompere? .... forse :)

Ci sono 2 motivi molto comuni al largo della parte superiore della mia testa che questo sarebbe accaduto. Se si sta utilizzando un'altra libreria che utilizza il $ per il suo oggetto principale, allora si otterrà un conflitto, questo però è risolvibile con jQuery.noConflict(), in questo modo:

var $j = jQuery.noConflict(); //give `$` back to whatever had it... 
$j("selector").doSomething(); //use the $j you assigned or jQuery from now on 

L'altro sarebbe hanno già caricato jQuery (probabilmente anche una versione diversa). Vorrei solo aggiungere un test jQuery oggetto prima di caricare lo script, in questo modo:

if (typeof jQuery == 'undefined') { //load jQuery } 
//jQuery has been loaded, either by your or originally, keep going... 

Questa soluzione per già caricato ha un avvertimento, se avessero una vecchia versione di jQuery, avrete solo le funzioni di quella versione. Non conosco un modo per caricare una vecchia versione e una nuova nella pagina e non ho un comportamento strano ... semplicemente non è stato progettato per farlo.

Inoltre, vorrei combinare questi due modi di aggirare per il caso che jQuery è già caricato e è il $, in questo modo:

if (typeof jQuery == 'undefined') { 
    var used = typeof $ != 'undefined'; 
    //load jQuery 
    if(used) jQuery.noConflict(); 
} 
window.$j = jQuery; 
//always use $j in your script, it'll always be present. 
+0

Che dire di questo? $ j (document) .ready (function() {// Qui roba come $ (selettore)} Non va bene? –

+0

Btw, grazie per l'ottima risposta! :) –

+1

@Martti - Puoi avvolgere il tuo codice quindi $ funziona all'interno di esso, come questo: '(function ($) {$ (function() {/ * document.ready stuff * /});/* altre cose usando $() * /}) (jQuery) ; ' –

Problemi correlati