在页面加载时进行初始验证后验证if语句

validate if statement after initial validation at page load

本文关键字:验证 if 语句 加载      更新时间:2023-09-26

如果满足两个条件,我将使用if语句对元素执行.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;
            });
        }
    });
  }

它在第一个条件下运行良好,但现在我想根据第二个条件,即变量infinite_scroll禁用/启用它。此变量在加载时处于"启用"或"禁用"状态,然后工作正常。问题是,当我用另一个jquery调用更改值时,它不起作用。我想if在加载时会被检查一次,但不会再次进行评估,这就是它不起作用的原因。使用jquery调用后,变量确实会更改值。

关于如何发现问题或使用其他方法,有什么想法吗?

谢谢,Isaac

是的,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);

希望这能达到你想要的效果。