2011-11-23 5 views
8

La documentazione dice che si può utilizzare $ .noConflict() in questo modo:di jQuery: Solo un rapido pensiero

jQuery.noConflict(); 
(function($) { 
    $(function() { 
    // more code using $ as alias to jQuery 
    }); 
})(jQuery); 
// other code using $ as an alias to the other library 

Essa afferma inoltre che definendolo restituisce un'istanza dell'oggetto jQuery, così ho potuto fare questo :

jQuery.noConflict()(function(){ 
    // code using jQuery 
}); 
// other code using $ as an alias to the other library 

Tuttavia, questa combinazione è valida?

(function($) { 
    $(function() { 
    // more code using $ as alias to jQuery 
    }); 
})(jQuery.noConflict()); 
// other code using $ as an alias to the other library 

Se sì, c'è un motivo per non farlo in questo modo? E anche (se funziona), perché non usare sempre questo metodo per garantire che all'interno della nostra chiusura, $ == jQuery?

+2

L'unico lato negativo che vedo è che se si hanno più blocchi del genere, si chiamerebbe inutilmente 'jQuery.noConflict()' più di una volta. Certo, non è un aspetto negativo molto significativo. – Wiseguy

+0

@Wiseguy Sì, penso che lo faresti solo alla prima chiusura, altrimenti è un po 'uno spreco. – JesseBuesking

+0

Quindi dovresti tenere traccia di quale blocco è il primo caricato. Che cosa succede se in un secondo momento aggiungi un blocco/includi un file .js al di sopra del precedente? Vorrei anche avere ' 'molto in alto e usa' (function ($) {}) (jQuery) 'dappertutto. Fondamentalmente si riduce alle preferenze personali, immagino. – Wiseguy

risposta

5

Anche l'ultimo metodo funziona - jQuery.noConflict() restituisce l'oggetto jQuery, che viene passato come argomento $ alla funzione.

Non vedo un motivo per non farlo in questo modo e preferirei agli altri metodi.

5

Non vedo perché non dal jQuery.noConflictreturns l'oggetto jQuery e viene valutato prima che la funzione venga chiamata.

Problemi correlati