login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Function undefined jQuery

Offline xSc - 30/06/2011 12:47 (laatste wijziging 30/06/2011 13:32)
Avatar van xScOnbekend
  1. $.fn.test = function()
  2. {
  3.  
  4. //code
  5. }
  6.  
  7. $('#maindiv a').click(function()
  8. {
  9. test();
  10. }


Waarom kent 'tie test niet? Ik zet erwel ($document).ready enzo omheen.

3 antwoorden

Gesponsorde links
Offline vinTage - 30/06/2011 13:01
Avatar van vinTage Nieuw lid je mist sowieso een sluithaakje bij je aanroep.

  1. $('#maindiv a').click(function()
  2. {
  3. test();
  4. }) //deze )


En misschien ligt het aan je gebruikte versie van jQuery, maar anders kan je het volgende eens proberen:
jQuery.fn.test = ....
Offline Ibrahim - 30/06/2011 13:38
Avatar van Ibrahim PHP expert Hij kent test niet, omdat hij waarschijnlijk niet in de globale scope wordt gedefiniëerd, maar binnen de jQuery scope. Hier zou ik even naar kijken. Ook is het het beste om click events binnen een $(document).ready(function() {}); of een $(function() { }); closure. Het kan namelijk zijn op het moment dat de event wordt gebonden, dat de element die wordt gezocht nog niet ingeladen is in de DOM.
Offline WouterJ - 30/06/2011 14:04 (laatste wijziging 30/06/2011 14:04)
Avatar van WouterJ HTML gevorderde Zodra je gebruik maatk van jQuery.fn zet je een nieuwe functie in die scope. Dan kan je hem niet zomaar aanroepen met functieNaam(). Zodra je hem in de jQuery scope zet kan je het gebruiken als plugin.
Bijv:
  1. var zegHallo = function( person ) {
  2. return 'Hallo '+person;
  3. };
  4. $(function() {
  5. $('a').click(function() {
  6. $('div#message').html(zegHallo('xSc')); // Of je kan hem gewoon normaal aanroepen
  7. });
  8. });
  9.  
  10. /* Op de jQuery scope manier */
  11. $.fn.laadHallo = function(person) {
  12. $(this).html('Hallo '+person);
  13. };
  14.  
  15. $(function() {
  16. $('a').click(function() {
  17. $('div#message').laadHallo('xSc');
  18. });
  19. });

Allebei de manieren werken, maar zoals je ziet kun je de functie van jQuery.fn.laadHallo alleen gebruiken samen met $. Dus $('div').test() werkt, maar test() werkt niet. Als je dat wilt moet je de normale manier gaan gebruiken.

Plugins maken gebruik van $.fn (of jQuery.fn wat je wilt).

@Mods, wat is er met die code highlighting aan de hand?
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.19s