2009-03-24 13 views
1

jQuery 1.3.2にアップグレードしたばかりですが、これは大部分はうまくいきましたが、新しいイベントモデルになると、jQueryで.nextを実行中に再帰が多すぎる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(); 
}); 

これは動作するために使用されるが、エラー「あまりにも多くの再帰」は、このライン上に飛び出している。この原因再帰、非表示()が間違って行くために何、何かを隠すことができますどのように

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

UPDATE

私はjQueryのUI 1.7.1スクリプトライブラリへの参照を削除した場合、問題が消えることを発見しました。 jQuery UIライブラリで何も呼び出さなくても、それが含まれていてもエラーが発生します。

答えて

6

手始めに、代わりに

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

使用してみてください。

そうしないと、暗黙的に探し、そのページ上のすべてのulの要素を返し、その後、「next」機能にその巨大な結果を渡しています。

documentationによれば、 'next'は、そのトラバーサルをフィルタリングするために使用される文字列、式をとります。

$("ul")ただし、DOMクエリを実行してjQueryオブジェクトを返します。これに代えて

+0

これは参考になりました。元のドキュメントを紛失しているはずです。 – ilivewithian

4

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

はこれを試してみてください。

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

next()を呼び出して、あなただけのCSSのセレクタ文字列全体ではなく、jQueryオブジェクトを渡す必要があります。ドキュメント:http://docs.jquery.com/Traversing/next#expr

jQuery UIは、アプリケーションにインポートされたときに標準のjQuery hide()関数をオーバーライドするため、問題がある可能性があります。ソースの3812行を参照してください。http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/jquery-ui.js

関連する問題