Verschillende versies JQuery

Status
Niet open voor verdere reacties.

bbuster

Gebruiker
Lid geworden
9 okt 2009
Berichten
11
Beste,

JQuery heeft verschillende versies.
Ik wil graag meerdere versies tegelijkertijd gebruiken.

Ik zag een "oplossing":

javascript code - Bekijk de code zonder highlighting - Klap code in
<script>
jq142 = jQuery.noConflict(true);
</script>



jq142 is bijvoorbeeld versie 1.4.2, maar ipv het op te lossen schakelt het een of meerdere scripts uit


Iemand een idee?

Bedankt
 
De logische vraag is: Waarom wil je twee versies gebruiken?

Functies die in bijvoorbeeld in versie 1.0 zitten zullen ook in 1.3 zitten. :confused:

De enige reden die ik mij kan bedenken is dat je plugins gebruikt welke niet meer worden geupdate.
 
Jah, ik heb vrij weinig verstand van javascript. Ik heb 2 scripts die ik mooi vind voor op mijn site.

Als ik de oudere versie uitschakel werkt dus dat script ook niet meer...
 
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.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan