2015-06-25 4 views
1

После загрузки 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 закреплен контейнер.

ответ

3

Пользовательские атрибуты в html должны быть определены с помощью «data- *», иначе это не сработает.

http://www.w3schools.com/tags/att_global_data.asp

имя Ваш атр в «данных-ивент-ид =», и он должен делать эту работу, даже когда я не доказал код JS: D

+0

нормально, это первая проблема: D, но все еще не работает .. ** scrollNumber ** возвращает 0 и прокрутка так же сломана .. –

+0

но 0 не в начале страницы? http://api.jquery.com/offset/ – messerbill

+0

, и я думаю, что вам нужен scrollTo(), а также http://stackoverflow.com/questions/1144805/how-do-i-scroll-to-the-top- of-the-page-with-jquery – messerbill