1

関数が 2 回呼び出されている理由を理解するのが難しい。

ラジオ ボタンが呼び出されたとき (intRev_yes) を検出し、div が空かどうかを確認し、別の div を下にスライドさせてから、日付フィールドを動的に作成するカスタム関数を呼び出します。

if(this.id=="intRev_yes"){
 if($('div#mainField').is(':empty')){
  $('.intRevSections').slideDown('slow',function(){
   current=-1;
   addIrField();
  });
 }   
}

各段階でアラートを出すと、最後 (つまり addIrField()) に到達した後、スクリプトは slideDown() セクションに戻って addIrField() を呼び出すようです。理由がわかりません。ループがありません。current日付フィールドのインデックスとして使用されます。

4

5 に答える 5

1

あなたはおそらくこれをバブルするDomイベントから呼んでいます。その場合は、http://en.wikipedia.org/wiki/DOM_eventsを参照してください。

于 2010-03-18T12:11:22.013 に答える
1

別のケースは次のとおりです。

クラス名が2つの要素がある場合.intRevSections、slideDownは2回実行され、コールバックは2回発生します...

これが役に立てば幸いです、シナン。

于 2010-03-18T12:17:38.007 に答える
0

これを試して:

if (this.id == "intRev_yes") {
        if ($('div#mainField').is(':empty')) {
            $('.intRevSections').slideDown('slow', function(event) {
                event.stopPropagation();
                current = -1;
                addIrField();
            });
        }
    }
于 2010-03-18T13:52:57.223 に答える
0

Sinan はすでに問題を発見しましたが、実際には回答を投稿しませんでした。答えは次のとおりです。

2 つの div がある理由を調べてください (JS から作成した場合、他の関数も 2 回実行される可能性があります)。

2 つある場合でも、1 つの div のみを使用するようにコードを修正することもできます。

 $('.intRevSections:first').slideDown('slow',function(){
   current=-1;
   addIrField();
  });
于 2010-03-18T13:18:10.967 に答える