【问题标题】:Animate for onclick on submit button only works in FF (not IE nor OP)提交按钮上的 onclick 动画仅适用于 FF(不适用于 IE 或 OP)
【发布时间】:2008-12-03 11:17:19
【问题描述】:

有人知道为什么下面的代码只对FF有效吗?

$(document).ready(function() {
    $('#powerSearchSubmitButton').click(function() {
        startLoad();
    });
});

function startLoad() {
    $('.message').each(function(i) {
        $(this).animate({ opacity: 0 }, 500);           
    });
};

【问题讨论】:

  • 为什么有注释代码和if语句?如果您提供重现问题的最少代码会更好。
  • 这是javascript?美元符号有什么作用?
  • @Albert 他正在使用一个名为 jQuery 的 JavaScript 库

标签: jquery jquery-animate


【解决方案1】:

***更新****

此处的示例http://pastebin.me/4937b07714655 的 1 个选项是保持消息计数并仅在最后一条消息上运行动画回调。


为什么不从 click 或 event.preventDefault() 返回 false 并在动画回调中提交表单

$(document).ready(function() {
    $('#powerSearchSubmitButton').click(function(ev) {
        startLoad();
        ev.preventDefault();
    });
});

function startLoad() {
    var $messages=$('.message');
    var count=$messages.length -1;
    $messages.each(function(i) {
       $(this).animate({ opacity: 0 }, 500, i == count ? submitForm:null);           
    });
};

function submitForm(){
     $('#yourForm').submit();
}

【讨论】:

  • 好主意,当我得到反馈时我会回来的:)
  • 通过将 submitForm 附加到每个 .message 的回调中,我会得到一些提交。我能否以某种方式从整个 startLoad 函数中实现回调(我应该将其重命名为 animateLoad 或其他东西)
  • boris 有多种方法可以计算项目数 $('.message').length 并保留一个计数器,以便您知道最后一个已触发,然后调用 submitForm 事件。您甚至可以在 750 毫秒后使用 setTimeout 表示您可以确定 99% 的动画已完成。看看哪一个效果最好
  • errr 我会在我的回答中澄清!
  • 谢谢,我选择了计数和 isSubmitted 切换。计数就是您所描述的,isSubmitted 切换可防止重复提交。
【解决方案2】:

尝试添加'return false;'到您的点击功能。我设置了一个演示 on my site,它在 IE6 和 Opera 中运行良好。

【讨论】:

  • 没问题,抱歉,我不知道您是否需要这样做。无论如何,您现在已经得到了答案 - 只需在所有动画完成后通过 javascript 提交即可。
猜你喜欢
  • 2016-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2013-07-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多