Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

Jquery werkt niet, twee keer geladen?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ben bezig met een site om speelgoed te vergelijken. Heb een script dat de zoekfunctie "autocomplete", gebaseerd op jquery. Dit werkt bijvoorbeeld goed op http://test.speelgoedprijzenvergelijken.nl/speelgoed/
Op deze pagina (en ook op de andere pagina's worden twee jquery versies aangeroepen:
code:
1
2
<script type='text/javascript' src='http://test.speelgoedprijzenvergelijken.nl/wp-includes/js/jquery/jquery.js?ver=1.10.2'></script>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>


De autocomplete in de zoekfunctie werkt hier goed. De countdown (rechts) werkt hier niet, deze hoort af te tellen.

Wanneer ik het searchform niet heb, dan werkt de countdown wel. Zie http://test.speelgoedprijzenvergelijken.nl/lego/lego-city/.
Een zelfde probleem doet zich voor op de homepage (http://test.speelgoedprijzenvergelijken.nl/). Jquery werkt wel op de mouse-over op de logo's, maar niet meer in het searchformulier (autocomplete doet t hier niet).

Ik heb overal gezocht, maar kom er niet achter wat deze inconsistentie veroorzaakt. 8)7
Zou iemand mij kunnen helpen om deze puzzel op te lossen? Mooiste zou zijn om van één jquery script gebruik te maken denk ik...

thanks!

  • André
  • Registratie: Maart 2002
  • Laatst online: 19-11 11:08

André

Analytics dude

Wat gebeurd er als je alleen 1.10.2 inlaadt?

  • Acid_Burn
  • Registratie: Augustus 2001
  • Laatst online: 02:58

Acid_Burn

uhuh

Waarom laad je 2 versies van jQuery? Hou het op 1 versie en werk daarmee.

Glass Eye Photography | Zelfbouw wireless fightstick | Mijn puzzel site


  • RM-rf
  • Registratie: September 2000
  • Laatst online: 01:14

RM-rf

1 2 3 4 5 7 6 8 9

2 versies van jQuery laden is een beetje onzin..
wat is de grond ervan (gebruik je verschillende scripts die voor verschillende jquery versies geschreven zijn en niet forward/backward compatible...? OOk dan blijf je problemen houden)


verder, wat betreft het vinden van je errors ben je nu bezig aan het begin van het debuggen...
'het werkt niet' is niet voldoende, maar je moet weten waar de fouten liggen, traceer je foutmeldingen en vind het punt waarop het misgaat... worden event niet goed toegewezen of vinden javascript-errors plaats? (console loggen en error-logs nazoeken)

Probeer eventueel een losstaande testcase te maken waarin enkel relevenate code gebruikt wordt en waar de foutmeldingen te reproduceren zijn..

(overigens, uiteidnelijk zul je dit zélf moeten oplossen... we willen je graag raad en advies geven en je helpen, maar enkel zolang je zélf het werk doet, dit forum is niet bedoeld als 'post ff-tjes dat het niet werkt, en iemand anders draagt de oplossing aan')

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 21-11 15:31

TheNephilim

Wtfuzzle

Zo te zien WordPress, die zal zelf jQuery inladen en jij doet het nogmaals. Sommige plugins doen het ook nog eens, normaal gesproken kun je daaromheen met onderstaande.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
function theme_enqueue_scripts () {

    // Deregister jQuery by Wordpress
    wp_deregister_script('jquery');

    // Register jQuery from CDN
    wp_register_script('jquery', '//cdn.jsdelivr.net/jquery/1.11.1/jquery.min.js', false, '1.11.1', true);

    // Use jQuery!
    wp_enqueue_script('jquery');

} add_action('wp_enqueue_scripts', 'theme_enqueue_scripts');

Verwijderd

Topicstarter
Thanks allen. Ben nog niet zo'n held in debuggen.
Ik laad t twee keer omdat -als ik de jquery-1.9.1.js weglaat- helemaal geen automcomplete meer heb. Blijkbaar zit er dus ergens een verschil tussen 1.9.1 en 1.10.2 :(
@TheNephilim Waar kan ik deze functie op loslaten (header.php?)...

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 01:14

RM-rf

1 2 3 4 5 7 6 8 9

Verwijderd schreef op vrijdag 29 augustus 2014 @ 13:42:

Ik laad t twee keer omdat -als ik de jquery-1.9.1.js weglaat- helemaal geen automcomplete meer heb. Blijkbaar zit er dus ergens een verschil tussen 1.9.1 en 1.10.2 :(
dat kan zijn, maar je 'oplossing' om dan maar een tweede, oudere jQuery ook te gaan laden is een beetje vragen om problemen.

vermoedelijk zijn deze beter op te lossen als je kiest voor de upgrade mogelijkheid voor oudere jQuery scripts welke jQuery zélf adviseert:

code:
1
<script src="http://code.jquery.com/jquery-migrate-1.2.1.js"></script>
invoegen na de script tags met de jQuery versie die je invoegt

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Verwijderd

Topicstarter
Thanks!
@RM-rf: ik heb jquery-migrate.min.js al aangeroepen in mijn site, werkt helaas nog niet.

Ik heb even zitten "debuggen".

Als ik 1.10.2 als enige inlaad, krijg ik bij het autocomplete form de melding:
TypeError: $ is not a function
$(function() {
In mijn code staat hier:
code:
1
2
3
4
5
<script type='text/JavaScript'>
  $(function() {
  $( "#pto_q" ).autocomplete({
    source: function( request, response ) {
      $.ajax({ etc...


Moet ik deze functie nu een andere naam geven?

Groet en dank!

Blijkbaar wordt $(function) wel in 1.9.1 benoemd, maar niet in 1.10.2.

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 21-11 15:31

TheNephilim

Wtfuzzle

1. Mijn stukje code moet je in functions.php van je thema plaatsen.

2. De error die je krijgt, zou je alleen krijgen met de standaard jQuery van WordPress. Kun je oplossen door je JavaScript te verpakken in:

JavaScript:
1
2
3
jQuery(document).ready(function($) {
    // Jou code hier
}


Zie de $ in function() hierboven, die $ beschikbaar maakt.

Verwijderd

Topicstarter
YES! Problem solved.
Onwijs bedankt!

  • BramVroy
  • Registratie: November 2009
  • Laatst online: 09-11 13:38
Of gewoon jQuery in NoConflict mode aanroepen zou ook moeten werken. http://api.jquery.com/jquery.noconflict/

  • Xantios
  • Registratie: Maart 2006
  • Laatst online: 20-11 17:18
zelf momenteel ook bezig met een project waar 2 verises van jQuery in elkaar gehaakt zijn.
de beste methode is en blijft gewoon het spul om klooien naar een versie van jQuery.

zeker als je een kant-en-klaar systeem als Wordpress gebruikt, zeker ook meteen de no-conflict er bij gooien want die $ wordt nog wel eens door andere systemen gebruikt :-)

Gewoon, wat tips
Pagina: 1