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

标签 javascript jquery

如果满足两个条件,我将使用 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 调用后,该变量的值确实发生了变化。

关于如何查看问题所在或使用其他方法有什么想法吗?

谢谢, 艾萨克

最佳答案

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

希望这能实现您想要做的事情。

关于javascript - 在页面加载时进行初始验证后验证 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34075756/

相关文章:

jquery - jquery.js 和 jquery.min.js 有什么区别?

javascript - $( "#hover"+item ) 不起作用,但 $( "#hover0") 起作用

javascript - 向 Jqgrid 添加所需的选择框

javascript - 从 Q promise 中崩溃应用程序而不是通过一系列 promise 传播拒绝?

javascript - 如何使用 ES6 将两个具有函数的对象合并为一个新对象?

javascript - 只删除普通文本,但不删除 span 元素

javascript - Dojo:小部件实例共享相同的变量

Javascript 检查地址路径链接是否可用

javascript - 如何将数据绑定(bind)到 Kendo 网格客户端模板中的 Kendo 下拉列表?

javascript - JQuery 不适用于 Joomla 3