Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery html()与其他函数链接的计时问题_Javascript_Jquery_Html - Fatal编程技术网

Javascript jQuery html()与其他函数链接的计时问题

Javascript jQuery html()与其他函数链接的计时问题,javascript,jquery,html,Javascript,Jquery,Html,我注意到了很多,但它终于开始困扰我了(请原谅这个双关语)。当我将html()与其他函数链接在一起时,似乎不管怎样,html()都会首先运行。例如: $("#news .inner").hide("slide", { direction: strOpposite }, 500).delay(1000).html(strData).show("slide", { direction: strDirection }, 500); 即使如图所示向其添加delay(),似乎也无法解决问题。这一行是我为网

我注意到了很多,但它终于开始困扰我了(请原谅这个双关语)。当我将
html()
与其他函数链接在一起时,似乎不管怎样,
html()
都会首先运行。例如:

$("#news .inner").hide("slide", { direction: strOpposite }, 500).delay(1000).html(strData).show("slide", { direction: strDirection }, 500);
即使如图所示向其添加
delay()
,似乎也无法解决问题。这一行是我为网站的新闻档案部分实现的翻页效果的一部分。有什么想法吗?谢谢。

jQuery所做的“效果”会被添加到效果队列中,而非类似效果的调用(
.html()
)不会,因此会立即完成

您可以尝试将其添加到回调函数,如下所示:

$("#news .inner").hide("slide", { direction: strOpposite }, 500).delay(1000, function() {
    $(this).html(strData)
}).show("slide", { direction: strDirection }, 500);
或者您可能正在尝试这样做:

$("#news .inner").hide(500, function() {
    $(this).html(strData); 
}).delay(1000).show("slide", { direction: strDirection }, 500);
顺便说一句,我认为您的
hide()
show()
调用在语法上不正确。您应该在jQuery API上签出并查看延迟用于操作队列(animate()、slideUp()等),并且不会影响非效果的菊花链排序。您可以使用回调来实现$.html()的真正延迟


当您将许多方法链接在一起时,它们将按链接顺序执行,但动画方法会添加到动画队列中,实际动画会在稍后(按顺序)执行

据我所知,动画队列中唯一的延迟是。
.html()
方法不是动画

如果您打算在
.hide()
方法完成后调用
.html()
,则应将其放入由提供的完整回调中

因此,假设您想隐藏,然后更改html,然后显示,您可以这样做:

$("#news .inner").hide("slide", { direction: strOpposite }, 500,
                       function() { $(this).html(strData); })
                 .show("slide", { direction: strDirection }, 500);

演示:

隐藏和显示元素等效果会添加到效果队列中。添加到队列中会立即发生,在队列上设置延迟也是如此。Html函数也会立即执行

延迟函数实际上并不延迟链中下一个函数的调用。默认情况下,如果没有第二个参数,它会延迟FX队列

如果您想解决这个问题,您可以使用jQuery.queue函数()创建自己的队列,或者更简单地使用标准的setTimeout函数()


或者,您也可以使用hide函数的完整回调来继续链

,这是使用回调的一个有效示例。大家都提到了这一点,;希望我能选择多个答案!谢谢,不用客气。我是个白痴。让我做一次检查,以确保完美。很抱歉。再次感谢。对于
hide()
show()
语法,我也有同样的想法,但后来我记得它们有额外的参数。
$("#news .inner").hide("slide", { direction: strOpposite }, 500,
                       function() { $(this).html(strData); })
                 .show("slide", { direction: strDirection }, 500);