2013-12-24 2 views
0

У меня есть функция ajax, которая получает больше сообщений.вычислить scrolltop на бесконечности scroll

Но я хотел бы активировать его автоматически.

Моя HTML структура выглядит следующим образом

<div class="header"> 
    .... 
</div> 
<ul id="grid"> 
    <li></li> 
    <li></li> 
    <li></li> 
    <li></li> 
    <li></li> 
    <li></li> 
    <li></li> 
    <li></li> 
    <!-- load more content --> 
</ul> 
<div> 
    .... 
</div> 
<div> 
    .... 
</div> 
<div> 
    .... 
</div> 
<div> 
    .... 
</div> 
<div class="footer"> 
    .... 
</div> 

Я использую этот код прямо сейчас.

var count = 2; 
    $(window).scroll(function(){ 
      if ($(window).scrollTop() == $(document).height() - $(window).height()){ 
       loadArticle(count); 
       count++; 
      } 
    }); 

Этот код запускает функцию ajax только тогда, когда пользователь достигает нижней части страницы.

Может ли кто-нибудь сказать мне правильный способ расчета scrolltop?

+0

проверить это так, я считаю, что это то, что и нужно, http: //stackoverflow.com/questions/3118075/lazyload-plugin – dreamweiver

+0

@dreamweiver не очень. Моя загрузка ajax работает нормально. Но его не запускать в правильном положении – Giri

+0

Не могли бы вы создать jsfiddle, чтобы мы могли проверить проблему, http://jsfiddle.net – dreamweiver

ответ

1

Используйте следующий код

function bindScroll(){ 

    if ($(window).scrollTop() >= $("#grid").height() - $(window).height() - 10) { 

    // unbind scroll 
    $(window).unbind('scroll'); 

    //call ajax function 
    loadArticle(count); 

    } 
} 

function loadArticle(count){ 
    .... 
    ..Ajax Call .. 
    .... 
    //bind sroll again 
    bindScroll(); 
} 

и называем bindScroll() функции в $ (документ) .ready раздел связать событие Scroll

0

Ok Я использовал некоторые альтернативные решения.

Я надеюсь, что это будет полезно для других.

<script type="text/javascript"> 
jQuery(document).ready(function($) { 
var count = 2; 
$.log(count); 
var total = <?php echo $wp_query->max_num_pages; ?>; 
      $(window).scroll(function(){ 
        if (element_in_scroll("#inifiniteLoader")) { 
         if (count > total){ 
          $("#inifiniteLoader").css('display','none'); 
          return false; 
         }else{ 
          $("#inifiniteLoader").css('display','block'); 
          loadArticle(count); 
         } 
         count++; 
        } 
      }); 
function loadArticle(pageNumber) { 
    $.ajax({ 
     url: "<?php bloginfo('wpurl') ?>/wp-admin/admin-ajax.php", 
     type:'POST', 
     data: "action=infinite_scroll&page_no="+ pageNumber, 
     success: function(html){ 
      $("#og-grid").append(html); // This will be the div where our content will be loaded 
     } 
    }); 
    return false; 
} 
function element_in_scroll(elem) 
{ 
    var docViewTop = $(window).scrollTop(); 
    var docViewBottom = docViewTop + $(window).height(); 

    var elemTop = $(elem).offset().top; 
    var elemBottom = elemTop + $(elem).height(); 
    return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop)); 
} 
}); 
</script> 


#inifiniteLoader { 
    margin: 20px 0; 
    display:none; 
} 

Поместите этот код, где вы хотите погрузить изображение.

<div style="text-align:center;" class="clear" id="inifiniteLoader"> 
    <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/loading.gif"> 
</div> 

Для загрузки изображения check here

+0

Прохладный, попробуйте закрыть этот вопрос, отметив его как ответ. – dreamweiver

+0

@dreamweiver На самом деле мне нужно подождать 2 дня, чтобы принять свой собственный ответ – Giri

+0

Да, я могу понять, никаких проблем, выступов не забудьте сделать это. – dreamweiver

Смежные вопросы