2011-06-29 9 views
0

J'espère que je ne fais pas juste une erreur stupide, mais pour une raison quelconque, le code suivant ne fonctionne pas. La seule chose qui arrive est-il enregistre "prêt" dans la console, mais rien dans le .cliquezjquery .click ne fonctionne pas

Javascript:

var Photobooth = (function(){ 
var api = {}; 

var init = function(){ 
    form_ready(); 

}; 


var form_ready = function(){ 
    console.log("ready"); 
    $('#btn-signin').click(function(e){ 


     e.preventDefault(); 
     console.log('click'); 

     $.ajax({ 
       type: 'POST', 
       url: "entertainment/photobooth/signin/action/", 
       data:$(this).serialize(), 
       success: function(){ 
       $(this).addClass("done"); 
       } 
      }); 

    }); 
}; 



init(); 
return api; 
})(); 

HTML:

<a id="btn-signin" href="##">SIGN IN </a> 

LA SOLUTION: Normalement, je mettre mon code JS à la fin du document, avant le corps de fermeture ... Dans ce cas, j'ai dû le mettre au début et j'ai oublié de mettre le document.ready, donc ça marche maintenant. Merci

+1

Juste essayé dans Chrome, il semble bien fonctionner (je clique sur "connecté" dans la console): http://jsfiddle.net/SzwRe/ –

+0

Vous avez beaucoup de code inutile, il est préférable de créer un réduction de votre problème. vous api variable est renvoyé, mais c'est un objet vide. –

+0

Cela fonctionne pour moi. Votre javascript est-il en cours d'exécution avant que le document ne soit prêt? – smoak

Répondre

4

Vous devez l'emballage document.ready:

var Photobooth = $(function(){... 
    .... 
    init(); 
    return api; 
}); 
+0

Wow .... Je ne sais pas pourquoi ça m'a manqué ... Je n'ai jamais mis un document.ready wrapper et ça a toujours marché. Peut-être parce que c'est en haut de la page en fait ... oui c'est logique maintenant. Merci! – Bill

0

Cela fonctionne pour moi. Essayez une démo here:

Je suppose que votre jQuery n'est pas chargé avant de l'utiliser.

Toujours utiliser jQuery dans les

$(document).ready(function(){ 

}); 
0

Je suis sûr que vous appelez votre code avant <a> est créé. Utilisez le ready de jQuery ou déplacez votre code au bas de la page.

Questions connexes