0

jQuery を使用してポップアップ ダイアログ ボックスを作成し、.load() を使用して記事の URL から取得した情報を div .side-article-title、.side-article-subtitle、および .side-article-detail に入力します。

しかし、.side-article-detail の高さは、上記の他の 2 つの高さに応じて変更する必要があり、変数 detailheight を取得して .height(); の ajax リターンから値を減算するようには見えません。

jQuery

$('body').prepend('<div class="side-article"><div class="side-article-close">X</div><div class="like">Like This</div><div class="article-inner"><div class="side-article-title"></div><div class="side-article-subtitle"></div><div class="side-article-detail"></div></div></div>');

var titleheight = null;
var subtitleheight = null;
var articleHeight = null;
$('.side-article-title').load(thisURL+' #item-title',function(){
        titleheight = $('.side-article-title').height();
        console.log(titleheight);
    });
    $('.side-article-subtitle').load(thisURL+' #item-subtitle',function(){
        subtitleheight = $('.side-article-subtitle').height();
        console.log(subtitleheight);
    });
    $('.side-article-detail').load(thisURL+' #item-detail',function(){
        $('#item-detail').jScrollPane();
    });

高さを設定する要素

    var detailheight = articleHeight -  titleheight - subtitleheight;
    $('.side-article-detail, .jspContainer').css('height',detailheight);
4

1 に答える 1

1

ajax のすべての機能は、完了後にコールバックで実行する必要があります。それらが任意の順序で動作することに依存することはできません。

$.when($('.side-article-title').load(thisURL+' #item-title', function () {...}),
   $("...").load(...),
   $("...").load(...)
).done(function () {
   var detailheight = articleHeight -  titleheight - subtitleheight;
});

.doneコールバックは、すべての ajax リクエストが完了したときにのみ発生します

于 2013-01-30T00:12:34.873 に答える