【问题标题】:Complete .click() function before running another function在运行另一个函数之前完成 .click() 函数
【发布时间】:2016-09-03 00:26:31
【问题描述】:

我有一个函数可以查找链接标签并在每个链接上调用点击函数。单击功能完成后,我想调用另一个功能(SecondFunction)。但是第二个函数在点击函数完成之前被调用。我希望在单击链接后调用第二个函数,以便在下一个单击的页面上调用函数。

setInterval(function(){
            $TabLinks= Get all links

            $TabLinks.each(function(index, value){       
                $(this).click(); // Do not worry about syntax, Click on first link(tab), then after clicking on tab,
 I want SecondFunction() to be called
                LinkClicked = 1
                SecondFunction() // This function should be called when it is on clicked page.
},1500)

 function SecondFunction(){
do bunch of other clicking.
setInterval(function(){
},1000)
}

现在,它转到第一个功能,转到单击功能,但没有转到下一个选项卡,这意味着单击功能尚未完成。在转到下一个选项卡之前,它会转到 SecondFunction() 函数并在 click() 函数完成之前开始运行该函数。

【问题讨论】:

  • 为什么不能在这个元素的click() 中调用SecondFunction()
  • 那行不通,正如我的问题所说,我希望 click() 将我带到下一个我想调用 SecondFunction 的选项卡,而不是 click() 函数。
  • 你的意思是SecondFunction在点击功能完成之前运行?奇怪,点击功能的代码是什么?,确保它不是异步的
  • @lx1412, click() 函数没有代码。它只是调用 jquery click 函数来点击 标签

标签: javascript jquery cookies


【解决方案1】:

我可能是错的,但我相信 javascript 事件流的工作方式是您可以将 SecondFunction() 包装为 0 超时,例如:

 setTimeout(secondFunction,0);

即使超时时间为 0,javascript 也会在当前事件流完成后将事件排入队列。

我会测试并回复你。

【讨论】:

    【解决方案2】:
    setTimeout(function () { $(this).click(); }, 0);
    

    【讨论】:

    • 你是说先调用这个函数然后调用secondFunction()? @lx1412
    • 我不希望它同时运行。我希望第一次单击功能完成,然后执行第二个功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-14
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多