問題のコードは次のとおりです。
$(".navItems>ul>li").live('click', function() {
var selectorID = $(this).attr('id');
$(".infoList").slideUp('fast', function(){
switchTabInfo(selectorID);
});
function switchTabInfo(selectorID){
var actionID = selectorID.substring(4);
actionID = "#" + actionID;
$(actionID).slideDown();
}
})
要するに、私はこれらの.infoListクラスを持っており、ID名はnav li IDに関連付けられています。そのリスト項目の ID は、たとえば nav_testsHistory のようになります。すべてのコンテンツ ボックスがクラス名で非表示になっているため、この JavaScript を使用すると、上下にスライドする効果が得られます。
しかし、3 番目のコンテンツ ボックスは、3 番目のボックスを押した後、2 番目のボックスと同様にちらつきます。不要な2回目の上下スライド。
次のようなアラートを追加すると:
$(".navItems>ul>li").live('click', function(){
var selectorID = $(this).attr('id');
$(".infoList").slideUp('fast', function(){
switchTabInfo(selectorID);
alert('bubble');
});
アラートが 3 回発生する!?
そのため、私の調査は、イベント バブルについて読むことになりました。私が見つけられないのは、それが発射されたかどうかを確認する方法です。入力値を設定して、ネストされたスライダー アクションの周囲で tf テストを実行しようとはしていません。それは粗雑だからです。
詳細については、上記のすべてのコードは関数内にあり、ドキュメントの準備ができたときに呼び出される init() 関数内にあります。jquery 1.3.2 以外の js ファイルはこれだけです。
皆さんはどう思いますか?