4

jqueryを使用してwordpressブログの次のページを取得し、目的のdivを見つけて既存の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、追加行に追加してみました。最初のケースでは、未定義のプロパティ表示を設定できないというエラーが表示されます。2 番目のケースでは、コンソールに HTML が表示され、"has no method hide" と表示されます。行 $(more_div). hide() も追加しようとしましたが、「Uncaught TypeError: Undefined のプロパティ 'display' を設定できません」というエラーが表示されます。3 行目で 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

htmljQueryオブジェクトではなく文字列を返すメソッドを使用しているため、エラーが発生します。次を試してください。

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 に答える