2015-12-03 4 views
0

Я использую если заявление сделать .load() элементов, если выполнены два условия:проверки, если заявление после первоначальной проверки на странице загрузки

if (current_items <= {{total_hits}} && infinite_scroll != 'disabled') { 
    $(window).scroll(function() { 
     if ($(document).height() <= $(window).scrollTop() + $(window).height()) { 
      var sort_by = $('#sort_by').val(); 

       if ($('input:checkbox:checked').val()) { 
        var category_filter = "" 
        $('input:checkbox:checked').each(function() { 
          category_filter += "\""+$(this).val()+"\"," 
         }); 
        category_filter = category_filter.substring(0, category_filter.length - 1); 
       }else{ 
        var category_filter = "all" 
       } 
      $.get('/search_ajax/{{query}}/'+sort_by+'/'+current_items+'/'+category_filter, function(data){ 
       $(data).appendTo("#container"); 
       current_items = $('[class="small-3 columns"]').length; 
      }); 
     } 
    }); 
    } 

Это работает отлично для первого условия, но теперь я хотите отключить/включить его на основе второго условия, переменной infin_scroll. Эта переменная «включена» или «отключена» во время загрузки и отлично работает. Проблема в том, что когда я меняю значение на другой вызов jquery, он не работает. Я думаю, что if проверяется один раз, когда он загружается, и он не оценивается снова, и поэтому он не работает. Эта переменная меняет значение после использования jquery-вызова.

Любые идеи о том, как узнать, что не так, или использовать другой подход?

Спасибо, Исаак

ответ

1

Да, if заявления автоматически не получить повторную оценку после загрузки страницы, но вы можете сделать это, в том числе выше код в функции и назвав его каждый раз после изменения переменная infinite_scroll, вот решение:

function changeSroll(current_items, infinite_scroll) { 
    if (current_items <= {{total_hits}} && infinite_scroll != 'disabled') { 
     $(window).scroll(function() { 
      if ($(document).height() <= $(window).scrollTop() + $(window).height()) { 
       var sort_by = $('#sort_by').val(); 

        if ($('input:checkbox:checked').val()) { 
         var category_filter = "" 
         $('input:checkbox:checked').each(function() { 
          category_filter += "\""+$(this).val()+"\"," 
          }); 
         category_filter = category_filter.substring(0, category_filter.length - 1); 
        }else{ 
         var category_filter = "all" 
        } 
       $.get('/search_ajax/{{query}}/'+sort_by+'/'+current_items+'/'+category_filter, function(data){ 
       $(data).appendTo("#container"); 
       current_items = $('[class="small-3 columns"]').length; 
       }); 
      } 
     }); 
    } 
} 

Теперь, каждый раз, когда вы измените переменную infinite_scroll, добавьте следующую строку:

changeSroll(current_items, infinite_scroll); 

Надеюсь, это делает то, что вы пытаетесь сделать.

+0

Работает отлично, большое спасибо :-), будет принимать как ответ, как только система позволит мне – isaapm

+0

Рад, что это сработало, я также ценю вылет. –

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