无法使用jquery清除数组

时间:2016-01-25 13:07:59

标签: javascript jquery

当div值变为“全部清除”时,我尝试使用array = [];删除数组的所有元素。但阵列无法清除。 我在这里所做的就是在div中包含所选的复选框值' filtervalue'。

这是脚本

<script type="text/javascript">
    $('.filtercheck, #location, #sorting , #filtervalue').on('click', function(e) {
      var parameter = [];
      var filter = [];
      var index = "";
      var HTML = "";
      var newHTML = "";

      $(".filtercheck").each(function() {
        if (this.checked) {
          filter.push($(this).val())
          parameter.push(this.name + "=" + $(this).val());
        }
      });

      if ($("#location").val()) {
        parameter.push($("#location").val());
      }

      if ($('#sorting').val()) {
        parameter.push($('#sorting').val());
      }


      for (var i = 0; i < filter.length; i++) {
        HTML = HTML + '<div>' + filter[i] + '</div>';
      }

      newHTML = HTML + '<div>' + 'Clear All' + '</div>'
      $('#filtervalue').html(newHTML).show();

      if (filter.length == 0) {
        $('#filtervalue').hide();
      }


      $('div#filtervalue>div').each(function() {
        $(this).on("click", function() {
          text = ($(this).text());

          if (text == 'Clear All') {
            filter = [];
            console.log(filter.length)
            parameter = [];
            console.log(parameter.length)
            $('#filtervalue').hide();
          } else {
            filter = jQuery.grep(filter, function(n) {
              return n != text;
            });

            console.log(filter)
            console.log(parameter)

            checkbox = $(":checkbox[value=" + text + "]")

            if (checkbox.prop("checked", true)) {
              checkbox.prop("checked", false);
              $(this).remove();
            }
          }
        });

      });

      parameter = parameter.join('&');
      $('#loading-image').show();
      console.log(filter)
      console.log(parameter)

      $.ajax({
        url: '{{ instance.get_absolute_url }}',
        type: 'GET',
        data: parameter,
        success: function(data) {
          var a = $(data).find('.prodthumb');
          $('.productgrid').html(a);
          $("img.lazy").lazyload();
        },
        error: function(e) {
          console.log(e.message);
        },

        complete: function() {
          $('#loading-image').hide();
        }
      });

    });
</script>

如何删除数组的所有元素? 谢谢

1 个答案:

答案 0 :(得分:0)

请查看以下代码。只需将您的变量声明移到顶部,如下所示。

var parameter = [];
    var filter = [];
    var index = "";
    var HTML = "";
    var newHTML = "";

    $('.filtercheck, #location, #sorting , #filtervalue').on('click', function(e) {   

      $(".filtercheck").each(function() {
        if (this.checked) {
          filter.push($(this).val())
          parameter.push(this.name + "=" + $(this).val());
        }
      });

      if ($("#location").val()) {
        parameter.push($("#location").val());
      }

      if ($('#sorting').val()) {
        parameter.push($('#sorting').val());
      }


      for (var i = 0; i < filter.length; i++) {
        HTML = HTML + '<div>' + filter[i] + '</div>';
      }

      newHTML = HTML + '<div>' + 'Clear All' + '</div>'
      $('#filtervalue').html(newHTML).show();

      if (filter.length == 0) {
        $('#filtervalue').hide();
      }


      $('div#filtervalue>div').each(function() {
        $(this).on("click", function() {
          text = ($(this).text());

          if (text == 'Clear All') {
            filter = [];
            console.log(filter.length)
            parameter = [];
            console.log(parameter.length)
            $('#filtervalue').hide();
          } else {
            filter = jQuery.grep(filter, function(n) {
              return n != text;
            });

            console.log(filter)
            console.log(parameter)

            checkbox = $(":checkbox[value=" + text + "]")

            if (checkbox.prop("checked", true)) {
              checkbox.prop("checked", false);
              $(this).remove();
            }
          }
        });

      });

      parameter = parameter.join('&');
      $('#loading-image').show();
      console.log(filter)
      console.log(parameter)

      $.ajax({
        url: '{{ instance.get_absolute_url }}',
        type: 'GET',
        data: parameter,
        success: function(data) {
          var a = $(data).find('.prodthumb');
          $('.productgrid').html(a);
          $("img.lazy").lazyload();
        },
        error: function(e) {
          console.log(e.message);
        },

        complete: function() {
          $('#loading-image').hide();
        }
      });

    });