然后SlideDown调用自定义函数

时间:2010-03-18 12:05:15

标签: jquery slidedown

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

我正在尝试检测何时调用单选按钮(intRev_yes),检查div是否为空,向下滑动另一个div,然后调用一个动态创建日期字段的custome函数。

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

当我在每个阶段发出警报时,在结束之后(即addIrField()),脚本似乎返回到slideDown()部分并重新调用addIrField()。我无法理解为什么,没有循环。 current用作日期字段的索引。

5 个答案:

答案 0 :(得分:1)

你可能是从一个泡泡的Dom事件中调用它。请参阅http://en.wikipedia.org/wiki/DOM_events以检查是否属实。

答案 1 :(得分:1)

另一个案例是:

如果您有两个具有类名.intRevSections的元素,则slideDown会运行两次,并且回调会触发两次......

希望这有帮助,思南。

答案 2 :(得分:0)

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

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

您可能还想修复代码,以便即使您有两个div也只使用一个div

 $('.intRevSections:first').slideDown('slow',function(){
   current=-1;
   addIrField();
  });

答案 3 :(得分:0)

试试这个:

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

答案 4 :(得分:0)

Jquery animate完全适合我

 $('.intRevSections:first').slideDown('slow',function(){
    complete: addIrField();
 });