2009-03-24 3 views
1

Je viens juste de passer à jQuery 1.3.2, ce qui a été très bien, mais il me manque quelque chose quand il s'agit du nouveau modèle d'événement (je pense)Trop de récursivité lors de l'exécution de .next dans jQuery 1.3.2

$(document).ready(function() 
{ 

    $(".AspNet-Menu-NonLink").click(function() 
    { 
     $(this).next($("ul")).slideToggle("fast"); 
    }); 
    $(".AspNet-Menu-NonLink").next($("ul")).hide(); 
    $(".AspNet-Menu-ChildSelected").next($("ul")).show(); 
}); 

Ceci fonctionnait, mais l'erreur « trop récursion » est popping sur cette ligne:

$(".AspNet-Menu-NonLink").next($("ul")).hide(); 

Comment cette récursion cause, hide() cache quelque chose, ce qui est de se tromper ?

MISE À JOUR

J'ai découvert que si je retire les références à jQuery UI 1.7.1 bibliothèque de scripts le problème disparaît. Même si je n'appelle rien dans la bibliothèque jQuery UI, mais que je l'ai inclus, j'obtiens l'erreur.

Répondre

6

Pour commencer, essayez d'utiliser

$(".AspNet-Menu-NonLink").next("ul").hide(); 

lieu.

Sinon, vous recherchez implicitement et retour tousul éléments sur la page, puis en passant que massif résultat à la fonction « next ».

Selon le documentation, 'next' prend une chaîne, une expression, qui est utilisée pour filtrer sa traversée. Toutefois, exécute une requête DOM et renvoie un objet jQuery.

$("ul")

+0

C'est utile, je dois avoir mal compris les documents originaux. – ilivewithian

4

Au lieu de cela:

$(".AspNet-Menu-NonLink").next($("ul")).hide(); 

essayez ceci:

$(".AspNet-Menu-NonLink").next("ul").hide(); 

Lorsque vous appelez next(), il vous suffit de passer une chaîne de sélecteur CSS, pas un objet jQuery entier. Documentation: http://docs.jquery.com/Traversing/next#expr

L'interface utilisateur jQuery peut être en cause car, lorsqu'elle est importée dans votre application, elle remplace la fonction jQuery hide() standard. Voir la ligne 3812 dans la source: http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/jquery-ui.js

Questions connexes