4

我正在使用 jquery 在我的 wordpress 博客上获取下一页,找到所需的 div 并将其附加到现有的。这部分工作没有问题。但是,我需要做的是,为其添加 slideDown 动画。到目前为止,这就是我的工作代码的样子:

$.get(next_page, function(data) {
    var response = $(data);
    var more_div = $(response).find('.FeaturedRow1').html();
    $('.FeaturedRow1').append(more_div).slideDown('slow');
    $('.navigation').not(':last').hide();

我尝试将 hide() 添加到响应、more_div 以及附加行。在第一种情况下,我收到错误消息,指出它无法设置未定义的属性显示。在第二种情况下,它在控制台中显示 HTML 并说“没有方法隐藏”。我也尝试添加一行 $(more_div).hide() 但我再次收到错误“未捕获的类型错误:无法设置未定义的属性‘显示’”。如果我在第三行使用隐藏

$('.FeaturedRow1').hide().append(more_div).slideDown('slow');

它隐藏了整个 FeaturedRow1 div 并为其设置动画,这将我带到了 div 的顶部,这是我不想要的。

编辑:这是所需部分的重要 HTML 结构和 jQuery 代码

<div class="FeaturedRow1">
  <div class="postspage">
    //list of posts here
  </div>
  <div class="navigation">
    <span class="loadless">
      //hyperlink to previous page
    </span>
    <span class="loadmore">
      //hyperlink to next page
    </span>
  </div>
</div>

当您单击 loadmore 内的超链接时,将调用以下 jQuery 代码

$('.loadmore a').live('click', function(e) {
    e.preventDefault();
    var next_page = $(this).attr('href');
    $.get(next_page, function(data) {
        var $response = $(data);
        var $more_div = $response.find('.FeaturedRow1').hide();
        $more_div.appendTo('.FeaturedRow1').delay(100).slideDown('slow')
        $('.navigation').not(':last').hide();
    });
});
$('.loadless').live('click', function(e) {
    e.preventDefault();
    if ($('.postpage').length != 1) {
        $('.postpage').last().remove();
    } 
    $('.navigation').last().remove();
    $('.navigation').last().show();
});
4

1 回答 1

2

当您使用html返回字符串而不是 jQuery 对象的方法时出现错误,请尝试以下操作。

var $response = $(data);
var $more_div = $response.find('.FeaturedRow1').hide();
$more_div.appendTo('.FeaturedRow1').delay(100).slideDown('slow');
//$('.navigation').not(':last').hide();

更新:

$.get(next_page, function(data) {
    var $response = $(data);
    var more_div = $response.find('.FeaturedRow1').html();
    $('<div/>').hide()
               .append(more_div)
               .appendTo('.FeaturedRow1')
               .delay(100)
               .slideDown('slow')
    $('.navigation').not(':last').hide();
});
于 2012-12-26T06:17:38.327 回答