2016-01-25 4 views
-2

Я пытаюсь удалить все элементы массива с помощью array = [];, когда значение div станет «очищать все», но массив не может очистить. Все, что я делаю здесь, включает выбранное значение флажка в div с именем 'filtervalue'.Невозможно очистить массив с помощью jquery

здесь сценарий

<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> 

Как я могу удалить все элементы массива? Спасибо

+3

'Как я могу удалить все элементы массива', если массив называется 'array', вы можете просто написать' массив = []; ', или даже' массив = null' (но тогда если вы хотите использовать функции массива в массиве, вам нужно снова создать массив) –

+0

Возможный дубликат [Как я могу удалить массив в JavaScript?] (http://stackoverflow.com/questions/1232040/how-do -i-empty-a-array-in-javascript) –

+0

У меня такое чувство, что это логическая ошибка, поскольку вы, похоже, устанавливаете ее на 'filter = []'. Слишком много кода для меня, чтобы пройти через это рано утром. – epascarello

ответ

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(); 
     } 
     }); 

    }); 
+0

Никакого эффекта, он все еще ведет себя одинаково –

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