2010-04-01 7 views
1

J'ai ce (remarquable) simple fonction JavaScript qui est appelée lorsqu'un utilisateur clique sur un lien « Annuler »:Le code simple jQuery contient une erreur de syntaxe que je ne peux pas trouver

function hideNewUserPanel(){ 
    $('#create_user_panel').slideUp('slow'); 
    $('.right_interior_panel').slideDown('slow'); 
} 

Et le code pour ajouter le gestionnaire:

$(function(){ 
    $('#cancel_create_user_btn').live('click', 
     function(){ hideNewUserPanel(); } 
    ) 
}); 

Fonctionnellement, tout fonctionne comme prévu. Le problème est, quand je clique sur le "Annuler" lien, Firebug affiche une erreur dans la console:

exception uncaught: Erreur de syntaxe, expression non reconnue: #

J'ai fait un pas dans le code plusieurs fois et l'erreur apparaît à un moment donné avant l'appel à hideNewUserPanel(). Au risque de ressembler à un de ces "programmeurs" (ceux qui prétendent avoir trouvé un bug dans GCC et supposer que leur propre code est parfait), l'exception est lancée à partir de quelque chose dans jQuery, donc je suppose que le problème est là-bas. J'utilise jQuery 1.3.2 (il s'agit d'un projet hérité utilisant de nombreux plugins jQuery qui se casseront si nous mettons à jour vers 1.4.x).

Y a-t-il quelque chose qui ne va pas dans mon code que je ne vois tout simplement pas? Ce code est, franchement, très simple et je ne vois pas vraiment quel pourrait être le problème.

Merci!

+0

Quoi, jQuery n'est pas parfait? :) – Robusto

+0

@Robusto - Afficher beaucoup de travaux de langage courant sans fermer les accolades correctement, IE5 et HTML ne compte pas! :) –

+1

note qui pourrait être juste: '$ ('# cancel_create_user_btn'). Live ('click', hideNewUserPanel);' –

Répondre

4

Ce:

$(function(){ 
    $('#cancel_create_user_btn').live('click', 
     function(){ hideNewUserPanel(); } 
}); 

a besoin d'un paren de fermeture après la fonction, comme ceci:

$(function(){ 
    $('#cancel_create_user_btn').live('click', 
     function(){ hideNewUserPanel(); }); 
}); 

En outre, vous pouvez écrire qu'un peu plus simple :), essayez ceci:

$(function(){ 
    $('#cancel_create_user_btn').live('click', hideNewUserPanel); 
}); 
+0

* paren, pas parent, methinks ... –

+0

Merde - c'est une erreur de transcription, en fait. Cette clôture apparaît dans le code, j'ai juste négligé de l'ajouter à ma question. Je vais mettre à jour la question. – inkedmn

+0

Le problème est que cela ne génèrerait pas une erreur de syntaxe lorsque le bloc de script est analysé, et pas plus tard? Je me demande s'il y a quelque chose de confus à l'intérieur du moteur de sélection. – Pointy

1

Vous semblez annoncer la fin de l'appel live:

$(function(){ 
    $('#cancel_create_user_btn').live('click', 
     function(){ hideNewUserPanel(); } 
    ); // <=== 
}); 
0
$(function() { 

     function hideNewUserPanel() { 
      $('#create_user_panel').slideUp('slow'); 
      $('.right_interior_panel').slideDown('slow'); 
     } 

     $('#cancel_create_user_btn').live('click', function() { hideNewUserPanel(); }); 



    }); 
Questions connexes