Ik denk dat het hier gaat om het toevoegen van een namespace. De functionaliteit van een JQuery versie wordt dan in een variabele ingekapseld.
Maar ik denk dat je in dat geval voor alle functies die je in je script hebt, afzonderlijk die variabele moet plaatsen.
Voorbeeld
Alle code die je in bestanden hebt staan beginnen in window. Ze zijn dus van hetzelfde niveau. Binnen dezelfde
scope.
De volgende code is dus niet correct:
PHP:
function slide() {
//Slide die in JQuery versie 1 staat
}
function drop() {
//Slide die in JQuery versie 1 staat
}
function slide() {
//Slide die in JQuery versie 2 staat
}
function drop() {
//Slide die in JQuery versie 2 staat
}
Je definieert namelijk telkens 2x dezelfde functie op hetzelfde niveau. Je zal dus of alle code moeten aanpassen, of je tilt er minimaal een naar een ander niveau.
EDIT: Nee, de noConflict functie is bedoeld om de $() variabele die JQuery gebruikt als 'shortcut' alias uit te schakelen. Dit zorgt ervoor dat er geen conflict ontstaat met andere bibliotheken die de $() functie gebruiken, niet dat er geen conflict tussen verschillende JQuery bibliotheken ontstaat.
EDIT: Ik heb nog nooit echt met JQuery gewerkt en ik zie de source voor het eerst. Maar misschien zou je bij elk JQuery bibliotheek die je bezit
PHP:
jQuery = window.jQuery = window.$ = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context );
},
aan kunnen passen. Bijvoorbeeld
PHP:
jQuery_<versienummer> = window.jQuery_<versienummer> = window.$ = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context );
},
En dan bij de scriptjes die gebruik maken van de verschillende versies jQuery vervangen met jQuery_<versienummer>
Geen idee of dat werkt,
maak eerst backups van je werk. Je moet dan nog steeds noConflict gebruiken voor
elk van je jQuery bibliotheken.
of misschien werkt:
PHP:
jQuery_<versienummer> = window.jQuery_<versienummer> = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context );
},
zonder fouten.
EDIT: Oke, laatste edit. Maar je scriptjes gebruiken sowieso vast de $() functie. Een reden waarom ze misschien niet meer werken wanneer je noConflict gebruikt, want dan werkt $() niet meer. Je zal deze moeten vervangen.