1

难以理解为什么我的函数被调用两次。

我试图检测何时调用单选按钮(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

另一种情况是:

如果您有两个具有类名的元素.intRevSectionsslideDown 将运行两次,并且回调将触发两次...

希望这会有所帮助,思南。

于 2010-03-18T12:17:38.007 回答
1

您可能是从冒泡的 Dom 事件中调用它的。请参阅http://en.wikipedia.org/wiki/DOM_events以检查是否是这种情况。

于 2010-03-18T12:11:22.013 回答
0

思南已经发现了问题,但实际上并没有发布答案。答案是:

找出为什么你有两个 div(如果你从 JS 创建它们,另一个函数也可能会运行两次)

您可能还想修复代码,使其仅使用一个 div,即使您有两个

 $('.intRevSections:first').slideDown('slow',function(){
   current=-1;
   addIrField();
  });
于 2010-03-18T13:18:10.967 回答
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

Jquery动画完成为我工作

 $('.intRevSections:first').slideDown('slow',function(){
    complete: addIrField();
 });
于 2013-06-04T10:23:43.087 回答