Удаление содержимого массива javascript

0

Я знаю, что его спрашивали, как миллион раз, но все, что я нашел в Интернете, не работает для меня, так что, возможно, это не так. Я пытаюсь заполнить массив подкатегорий, динамически основанный на текущей категории, а затем использовать этот массив в качестве источника для редактирования x-editable. Проблема в том, что каждый раз, когда я меняю категорию, массив подкатегорий обновляется новыми категориями, но старые подкатегории все еще остаются там. Я попытался установить свойство length до 0 перед ajax, но не радость.

var subcategories = [];

    $('body').on('hover', '.subcategory_editable', function(){

        $.ajax({
            type:"post",
            dataType: "json",
            data: "category="+$(this).attr('category_id'),
            url:"ajax_php/account_page/get_all_subcategories.php",
            success:function(data){
                $.each(data, function(k, v ) {
                        subcategories[v.id] = v.subcategory
                });
            }
         });
    });

    $(document).ajaxComplete(function() {
        $(".subcategory_editable").editable({
            inputclass:'not_select',
            value:'',
            source:subcategories
        });
    });
  • 0
    JavaScript рассчитает для вас свойство length для массивов. Нет необходимости сбрасывать его вручную. Просто инициализируйте subcategories как пустой массив (т.е. subcategories = [] ) при каждом обратном вызове успеха. Свойство длины изменится автоматически.
  • 1
    @ War10ck Хотя это и не применимо к этому экземпляру, установка длины в 0 может на самом деле быть очень полезной для сохранения той же ссылки и в то же время для очистки массива
Показать ещё 3 комментария
Теги:
x-editable

2 ответа

2
Лучший ответ

Просто обновляйте subcategories каждый раз, когда AJAX завершает:

success:function(data){
    subcategories = [];
    $.each(data, function(k, v ) {
        subcategories[v.id] = v.subcategory
    });
}
1
 var subcategories = [];

    $('body').on('hover', '.subcategory_editable', function(){

        $.ajax({
            type:"post",
            dataType: "json",
            data: "category="+$(this).attr('category_id'),
            url:"ajax_php/account_page/get_all_subcategories.php",
            success:function(data){
                subcategories = []
                $.each(data, function(k, v ) {
                        subcategories[v.id] = v.subcategory
                });
            }
         });
    });

    $(document).ajaxComplete(function() {
        $(".subcategory_editable").editable({
            inputclass:'not_select',
            value:'',
            source:subcategories
        });
    });

Ещё вопросы

Сообщество Overcoder
Наверх
Меню