我还在学习jQuery,现在我想做的是将html()
方法和一个转换(比如hide()
和show()
)结合起来,以便改变一个具有转换效果的div的html。这是我尝试过的:
$('div.content_box').hide(1000).html(return_html).show(1000);
其中PHP是div,其内容/ div.content_box
应通过转换进行更改,而return_html包含通过ajax()
方法请求的PHP文件返回的html。
然而,这并没有给我想要的结果。它不是先隐藏div,然后更改它的html,然后再次显示它,而是在它仍然隐藏它的时候就已经更改了div的HTML内容。
有没有人知道我如何才能正确地工作(其中的操作是按正确的顺序执行的,一次执行一个)?
发布于 2011-12-26 22:33:24
有许多方法可以归档您想要的内容:
在hide上使用回调:http://jsfiddle.net/VbkNE/
$('div.content_box').hide(1000, function() {
$(this).html(return_html).show(1000);
});
使用queue:http://jsfiddle.net/VbkNE/1/
$('div.content_box').hide(1000).queue(function(next) {
$(this).html(return_html);
next();
}).show(1000);
使用原生setTimeout:http://jsfiddle.net/VbkNE/2/
$('div.content_box').hide(1000);
setTimeout(function() {
$('div.content_box').html(return_html).show(1000)
}, 1000);
在你的情况下,使用延迟是行不通的,引用jQuery API - delay:
只延迟队列中的后续事件;例如,这不会延迟.show()或.hide()等不使用effects队列的无参数形式。
在本例中,我使用回调方法-因为您不需要像在setTimeout中那样重新定义选择器,也不需要像在queue示例中的next()
那样移动队列存量,但是请注意queue方法是多么强大。例如,用于链接AJAX调用。
发布于 2011-12-26 22:29:23
在链中使用jquery delay():http://api.jquery.com/delay/
我认为在一个链中使用hide()和show()是行不通的。
https://stackoverflow.com/questions/8636596
复制相似问题