2015-06-10 3 views
1

Я создаю загрузку ajax для моего проекта wordpress.сбрасывать переменную jquery до начального

Когда я прокручиваю страницу вниз, количество страниц увеличивается на 1 каждый раз. который изначально я хочу.

Реальная проблема:

Когда я выбираю категорию падение вниз, я хочу, чтобы сбросить переменные страницы в 1. После кода установите номер страницы в 1 для экземпляра она называется, а потом, когда я прокручиваю вниз на странице она увеличилась с предыдущим номером не с 1.

для Ex: Когда я открываю эту ссылку и проверить в поджигатель ...

- I see pageNumber variable set to 1. 
- Now scroll down to page and it will be changed 2. Now when I go back to up and select any category to filter posts, and 
- Inspect page number in firebug it is now showing 1, which is right. 
- But Now if you scroll down to page you will pagenumber is changed to 3 not 2. 

Это проблема ...

// ajaxLoop.js 
jQuery(function($){ 
var $grid = $('.post-area').masonry({ 
     itemSelector: '.post-area .box', 
    }); 
var page = 1; // initialization 
var loading = true; 
var $window = $(window); 
var $content = $("body.blog #main"); 
var load_posts = function(page = 1, cat = '', year = '', orderby = ''){ 
     // If any filter is applied and page is 1 
     if((cat != '' || year != '' || orderby != '') && page == 1){ 
      $content.html(''); 
      page = 1; // I think this will reset the page variable to 1, but it is not working 
     } 
     $.ajax({ 
      type  : "GET", 
      data  : {numPosts : 1, pageNumber: page, cat: cat, year: year, orderby: orderby}, 
      dataType : "html", 
      url  : "wp-content/themes/theme-name/loopHandler.php", 
      beforeSend : function(){ 
       if(page != 1){ 
        $content.append('<div id="temp_load" style="text-align:center">\ 
         <img src="/wp-content/themes/theme-name/images/ajax-loader.gif" />\ 
         </div>'); 
       } 
      }, 
      success : function(data){ 

       $data = $(data); 
       if($data.length){ 
        $data.hide(); 
        $content.append($data); 
        $grid.append($data).masonry('appended', $data); 
        $grid.masonry('reloadItems'); 
        $grid.masonry('layout'); 
        $data.fadeIn(500, function(){ 
         $("#temp_load").remove(); 
         loading = false; 
        }); 
       } else { 
        $("#temp_load").remove(); 
       } 
      }, 
      error  : function(jqXHR, textStatus, errorThrown) { 
       $("#temp_load").remove(); 
       alert(jqXHR + " :: " + textStatus + " :: " + errorThrown); 
      } 
    }); 
} 
$window.scroll(function() { 
    var content_offset = $content.offset(); 
    console.log(content_offset.top); 
    if(!loading && ($window.scrollTop() + 
     $window.height()) > ($content.scrollTop() + $content.height() + content_offset.top)) { 
      loading = true; 
      var cat = $('select[name="cat"]').val(); 
      var year = $('select[name="year"]').val(); 
      var orderby = $('select[name="orderby"]').val(); 
      page++; 
      load_posts(page, cat, year, orderby); 
    } 
}); 
$('select[name="cat"]').on('change', function() { 
    var cat = $(this).val(); 
    var year = $('select[name="year"]').val(); 
    var orderby = $('select[name="orderby"]').val(); 
    load_posts(1, cat, year, orderby); 
}); 

$('select[name="year"]').on('change', function() { 
    var year = $(this).val(); 
    var cat = $('select[name="cat"]').val(); 
    var orderby = $('select[name="orderby"]').val(); 
    load_posts(1, cat, year, orderby); 
}); 

$('select[name="orderby"]').on('change', function() { 
    var orderby = $(this).val(); 
    var cat = $('select[name="cat"]').val(); 
    var year = $('select[name="year"]').val(); 
    load_posts(1, cat, year, orderby); 
}); 

load_posts(); 
}); 

Я думаю, что это должно быть легким решением, но не для того, чтобы понять это. Может ли кто-нибудь вести меня в правильном направлении? Я не так Ниндзя с JQuery ...

+0

Если это то, что вы нажимаете, почему бы просто не проверить щелчок на этом конкретном типе элемента, а затем установить значение 1? –

+0

Это из-за объема вашей переменной 'page'. Если одна и та же переменная доступна в обеих областях методов, она не создаст эту проблему. –

+0

'if ((cat! = '' || year! = '' || orderby! = '') && page == 1) {'в чем заключается требование установки' page = 1', если его уже «1» –

ответ

0

Я думаю, что это должно работать для вас,

удалить page параметр из load_posts

И в случае вашего change события перед вызовом функции load_posts установить этот page value to 1

+0

Спасибо большое, это сработало. Работали над этим с последних двух часов, но не смогли это выяснить. Еще раз спасибо. – Jimmy

+0

как @ PardeepDhingra сказал, что это проблема сферы. Когда вы пытаетесь установить страницу 1 в load_posts, она устанавливает это значение для вашей локальной переменной страницы вашей функции load_posts, а не для глобальной, поэтому проблема была. –

+0

Да, я был уверен, что это что-то связано с областью переменной, но не может ее решить. Спасибо за описание. :) – Jimmy

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