jQuery conflict
ik heb in mijn JS een heel groot bekend probleem.. maar ik kom er maar niet uit hoe ik dit op zou moeten lossen. ik heb veel gegoogled en de manieren die ze gebruiken om dit op te lossen kan ik niet toepassen op mijn script omdat het heel anders opgebouwd is.
het gaat om het volgende: ik heb de jQuery library van google geinclude en een script van een lightbox plugin. nou is het zo dat of het een werkt of het ander.. dus als ik de library van google weghaal dan doet de lightbox het gewoon netjes maar wanneer ik deze weer terugzet doen de scripts waarvoor ik de library nodig heb wel maar doet de lightbox het niet dit komt door een conflict. er wordt op internet verteld dat je dit kan oplossen door $ voor de een te gebruiken en jQuery voor de ander. alleen zou ik niet weten hoe ik dit zou moeten oplossen. iemand enig idee?
dankjewel alvast!
<script type="text/javascript" src="js/prototype.js"></script>
<script type="text/javascript" src="js/scriptaculous.js?load=effects,builder"></script>
<script type="text/javascript" src="js/lightbox.js"></script>
<script type="text/javascript" src="validation.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
Dan heb je dit soort problemen niet zo gauw.
Dit doet exact het zelfde:
http://leandrovieira.com/projects/jquery/lightbox/
Oeps even te snel op de knop gedrukt.
noConflict() gebruik je als je een function van het ene wil gebruiken en een function van een ander framework. Dus zeg maar iets als porten van het ene naar het andere.
Dat moet je dus IN je scripts veranderen.
Maar een nettere oplossing vind ik persoonlijk om het bij een framework te houden. :)
Gewijzigd op 23/03/2012 00:06:51 door Bart V B
dat is het probleem ik gebruik die lightbox al... en ik gebruik andere jquery dingen op mn website en de jQuery library van google die ik gebruik voor die andere scripts is in conflict met die van lightbox... en ik kan niet die van lightbox verwijderen omdat die speciaal voor de lightbox is
Niet die van jquery hoor.
Je laad alleen het jquery framework van google.
En dat geeft conflicten waarschijnlijk.
Heb je een link voor me waar ik ff kan spieken?
ja dat bedoel ik die jquery van google en die prototype en die andere dat geeft conflict met elkaar
Je gebruikt lightbox. Deze is van Prototype en scriptaculous.
Je gebruikt jquery voor validation.js toch?
Ik zeg:
Quote:
Dit doet exact het zelfde:
http://leandrovieira.com/projects/jquery/lightbox/
http://leandrovieira.com/projects/jquery/lightbox/
Mijn vraag/advies is dan ook waarom niet in een soort framework houden?
Dus als jij het prettig vind om met jquery te werken, omdat het ook gebruikt word DOOR validation.js, dan kan je beter de oplossing zoeken door lightbox ook in jquery te gebruiken.
Dus de link die ik in de quote gaf.
Wat van google ingeladen word is het jquery framework. Meer niet.
Prototype is een totaal ander framework, waar je eigenlijk niets mee doet als lightbox laden. En dat hoeft helemaal niet. (even als aanname gezien ik even in een ander topic heb gekeken van je omdat ik ervan uit ga dat het over die site gaat.)
wanneer ik die andere gebruik heb ik ook hier last van. of bedoel je dat ik dan de jquery daarvan niet gebruiken moet?
Binnen die functie is $ het jQuery object, er buiten niet.
Misschien moet je wel oppassen welk framework je eerst in je code laadt, moet je eens uitzoeken.
Dit kan op deze manier
Nogmaals: 1 framework gebruiken, 1 versie.
Dus niet voor het ene jquery-1.17-min.js en voor het andere een versie hoger.
Kijk eens in de bron van lightbox.js.
Is dat jquery of prototype?
Kris Peeters op 23/03/2012 01:20:00:
Je kan al je jQuery wrappen in een functie die zichzelf aanroept.
Binnen die functie is $ het jQuery object, er buiten niet.
Misschien moet je wel oppassen welk framework je eerst in je code laadt, moet je eens uitzoeken.
Dit kan op deze manier
Binnen die functie is $ het jQuery object, er buiten niet.
Misschien moet je wel oppassen welk framework je eerst in je code laadt, moet je eens uitzoeken.
Dit kan op deze manier
Klopt Kris, alleen vermoed ik dat de TS niet begrijpt dat het allemaal in 1 framework kan. Wat ik er zo van zie is hij nu gewoon 2 frameworks aan het gebruiken wat niet nodig is. Lightbox heb je ook in de versie jquery dus niet nodig om een work a round te bouwen...
Gewijzigd op 23/03/2012 01:26:08 door Bart V B
www.reshadfarid.nl
lokaal krijg ik geen enkel error, maar op de website heb ik er 4
Gewijzigd op 23/03/2012 01:38:24 door Reshad F
Deze word niet geladen....
EDIT verwijder die eens en zet daar eens je oude link neer:
Code (php)
1
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
Gewijzigd op 23/03/2012 01:39:45 door Bart V B
Toevoeging op 23/03/2012 01:42:03:
dan krijg ik deze error in mijn console. Uncaught Syntax error, unrecognized expression: [@rel*=lightbox]
dit gebruik ik om aan te geven welke img tot de lightbox behoren
persoonlijk zou ik hem niet van google laden, maar gewoon de recentste bij jquery.com downloaden. En deze op jou eigen domein zetten.
Google KAN er soms uit liggen, en dan werkt het niet meer.
Volgens mij kan je die van google ook gebruiken hoor, maar persoonlijk houd ik niet zo van afhankelijk zijn van externe partijen.
Je gebruikt nu versie 1.2.3
Je kan ook naar een JQUERY lightbox googlen die met 1.7.x werkt.
Gewijzigd op 23/03/2012 01:47:38 door Bart V B
Code (php)
1
2
2
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
<script>window.jQuery || document.write(unescape(''%3Cscript src="js/jquery-1.7.1.min.js"%3E%3C/script%3E'))</script>
<script>window.jQuery || document.write(unescape(''%3Cscript src="js/jquery-1.7.1.min.js"%3E%3C/script%3E'))</script>
Mocht google eruit liggen (wat zelden gebeurd) of ben je offline hiermee bezig dan valt hij terug naar js/jquery-1.7.1.min.js op jou host, dit path kun je natuurlijk aanpassen.
En mocht je dit probleem dan nog eens krijgen. Zie dan mijn reactie hier of de reactie van Kris hierboven.
Reshadd, je weet dat ProtoType een JS framework is, precies zoals jQuery dat is?
Gewijzigd op 23/03/2012 08:56:30 door Wouter J
Shadowbox die, als je de correcte versie samenstelt met diverse JS-frameworks samen kan werken.
Ook een erg fijn Lightbox-achtige is Quote:
@Bart, persoonlijk zou ik de Google CDN gebruiken met een local fallback:
Dat kan natuurlijk ook. Maar dat vond ik even voor dit topic ietsje te ver gaan. :)
Quote:
Reshadd, je weet dat ProtoType een JS framework is, precies zoals jQuery dat is?
Dat was het gehele probleem vannacht Wouter.
Ik kreeg het gevoel dat Resshadd dat niet door had.
Dan is het heel lastig om uit te gaan leggen dat je met jullie optie, dus met noConflick() e.d. het ook kan.
Ik zou me kunnen voorstellen dat het soms handig zou zijn.
Maar voor deze ene optie en gezien het allemaal nog copy/past scripten is, is dat niet ideaal. (Overigens bedoel ik dit naar de TS niet negatief uiteraard.)
Deze optie is handig als je iets wil doen van het ene framework samen met het andere.
Als de optie in het ene framework ook al zit, waarom zou je dit dan willen.
Dan kan je beter gewoon 1 framework gaan leren, en als je er zelf dingen in kunt schrijven het op jullie manier gaan proberen he. ;)
Nja het probleem was dat ik de framework van google niet kon gebruiken en ik wist dat prototype een framework is maar de jquery code die ik al gebruikte werkte dan niet als ik alleen die van google gebruiktw