在jQuery

时间:2017-09-19 19:42:10

标签: javascript jquery jquery-animate

我有两个函数触发元素及其子元素的动画(对于opacitytop),第二个是第一个的回调函数。

在他们之间有一个5秒的暂停,我通过在第二个函数中插入.delay(5000) animate(...)之前创建。

它有效,但我正在寻找一种方法,在第一个函数结束时暂停 5秒钟。

原因:我正在执行第二个函数,该函数取决于buttonstate变量的值(通过单击按钮设置)。但是该功能在 5秒延迟之前检查了值,这是不好的,因为如果在这5秒内按下停止按钮,该功能仍然执行...

function fademove_1(slide_nr) {
    $(".slide_inner").css({"top": "70%", "opacity": "0.01"});
    $(".slide_" + slide_nr + " .slide_inner").delay(500).animate({
        top: "50%",
        opacity: 1
    }, 700, fadeout_1);
  }
function fadeout_1(slide_nr) {
    if(buttonstate != "stop"){
        $(".slide_" + slide_nr).delay(5000).animate({
          opacity: 0.01
        }, 2000);
    }

我根本找不到办法 - 我尝试的一切都行不通。有什么建议我可以做什么?

2 个答案:

答案 0 :(得分:1)

归功于@PitaJ,但这是我在特定代码中解决它的方式。我从第二个函数中删除了延迟,并将它(与promise().then.(...)一起)连接到第一个函数动画之后,如下所示:

function fademove_1(slide_nr) {
    $(".slide_inner").css({"top": "70%", "opacity": "0.01"});
    $(".slide_" + slide_nr + " .slide_inner").delay(500).animate({
        top: "50%",
        opacity: 1
    }, 700).delay(5000).promise().then(fadeout_1);;
  }
function fadeout_1(slide_nr) {
    if(buttonstate != "stop"){
        $(".slide_" + slide_nr).animate({
          opacity: 0.01
        }, 2000);
    }

答案 1 :(得分:0)

如果要停止动画然后运行它,请尝试unique_code = data.import_code.unique() for importcode in unique_import_codes: filename = importcode.replace(".","") + ".csv" path = r"C:/myrequiredpath/" data.loc[data.import_code==importcode].to_csv(path+filename, index=False) 。 例如:

.stop(true, true)

我希望这会有所帮助。