我正在使用下面的循环+ jQuery加载下一组页面,并且它在第一次单击时起作用,但是当下载页面加载并且我点击“更新的帖子”时它会重新加载整个页面。有什么想法吗?
<div id="content">
<?php
$new_query = new WP_Query();
$new_query->query('post_type=post&showposts=1'.'&paged='.$paged);
?>
<?php while ($new_query->have_posts()) : $new_query->the_post(); ?>
<?php the_title(); ?>
<?php endwhile; ?>
<div id="pagination">
<?php next_posts_link('« Older Entries', $new_query->max_num_pages) ?>
<?php previous_posts_link('Newer Entries »') ?>
</div>
</div><!-- #content -->
<script>
$('#pagination a').on('click', function(event){
event.preventDefault();
var link = $(this).attr('href'); //Get the href attribute
$('#content').fadeOut(500, function(){ });//fade out the content area
$('#content').load(link + ' #content', function() { });
$('#content').fadeIn(500, function(){ });//fade in the content area
});
</script>
答案 0 :(得分:22)
您正在使用jQuery的load()
方法插入内容,这是$.ajax
的快捷方式,当然会动态插入内容。
动态内容需要将事件委托给非动态父级,jQuery可以轻松使用on()
jQuery(function($) {
$('#content').on('click', '#pagination a', function(e){
e.preventDefault();
var link = $(this).attr('href');
$('#content').fadeOut(500, function(){
$(this).load(link + ' #content', function() {
$(this).fadeIn(500);
});
});
});
});
答案 1 :(得分:3)
我使用了adeneo的解决方案,并进行了一些小调整。
.disabled
类的分页链接。display: none;
)。相反,我手动设置不透明度的动画,这会限制高度波动的大小。这是更新后的代码:
$('#content').on('click', '#pagination :not(.disabled) a', function(e){
e.preventDefault();
var link = $(this).attr('href');
$.post( link, function( data ) {
var content = $(data).filter('#content');
var pagination = $(data).filter('#pagination');
$('#pagination').html(pagination.html());
$('#content').animate(
{opacity: 0},
500,
function(){
$(this).html(content.html()).animate(
{opacity: 1},
500
);
}
);
});
});