После загрузки ajax содержимого html мне нужно прокрутить до определенного элемента. Элемент атр данных-EVENT-ID = "" Но иногда эта переменная $('.timelineToolPanel[data-event-id="'+id+'"]').offset().top;
возвращает 0. Всего Аякса код:jQuery scrollTop после загрузки ajax не работает
function refreshContent(id)
{
var scrollNumber = 0;
$.ajax({
type: 'POST',
url: '<?php echo Yii::app()->createAbsoluteUrl("user/ajaxEventLoad"); ?>',
dataType:'html',
success:function(data){
$("#eventListBlock").empty().append(data);
if(id!=null) {
console.log(id);
scrollNumber = $('.timelineToolPanel[data-event-id="'+id+'"]').offset().top;
console.log(scrollNumber);
$("html, body").animate({
scrollTo: scrollNumber
}, 1000, function() {
// alert("Finished animating");
});
}
},
error: function(data) { // if error occured
alert("Error occured. please try again");
}
});
}
и HTML:
<div id="eventListBlock">
<?
$this->renderPartial('/windows/timelineWindow', array(
'dataProvider'=>$dataProvider
));
?>
</div>
с оказанием этой части:
<div class="cd-timeline-block">
<div class="cd-timeline-icon" style="background: <? echo $data->color ?>">
<i class="fa fa-<? echo $data->icon ?>"></i>
</div>
<div class="cd-timeline-content">
<div class="timelineToolPanel" data-event-id="<? echo $data->id ?>">
<i class="fa fa-pencil timelineToolPanelEdit"></i>
<i class="fa fa-trash timelineToolPanelDelete"></i>
</div>
<h2><? echo $data->title ?></h2>
<p><? echo $data->content ?></p>
<span class="cd-date"><? echo date("d. m. Y", strtotime($data->date_event)); ?></span>
</div>
</div>
где #eventListBlock закреплен контейнер.
нормально, это первая проблема: D, но все еще не работает .. ** scrollNumber ** возвращает 0 и прокрутка так же сломана .. –
но 0 не в начале страницы? http://api.jquery.com/offset/ – messerbill
, и я думаю, что вам нужен scrollTo(), а также http://stackoverflow.com/questions/1144805/how-do-i-scroll-to-the-top- of-the-page-with-jquery – messerbill