Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   не большой вопросик по методу append() (https://javascript.ru/forum/misc/47049-ne-bolshojj-voprosik-po-metodu-append.html)

kowapos 06.05.2014 21:08

вот у меня короче такой код
$.ajax({ // аяксим
            type: 'POST',
            url: '/ajax/loadTreeAjax.php',
            dataType: 'json',
            data: {accept:1},
            success: function(data){
              
              //console.log(data.projects);
                $.each(data.projects, function (key) {
                    
                  newElement = '<div class="elementList" id = "project' + data.projects[key].id_project + '"><div class="ObjectTitle"><span class="glyphicon glyphicon-folder-open"></span> ' + data.projects[key].name + '</div><div class="dropdown objMenu"><a data-toggle="dropdown"><span class="tools glyphicon glyphicon-cog"></span></a><ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"><li><a href="javascript:;">Совместный доступ</a></li><li><a href="javascript:;">Маркер</a></li><li><a href="javascript:;">Добавить в "Избранное"</a></li><li><a href="javascript:;">Информация</a></li></ul></div></div>';

                  blockProjects.children('.TitleBlock').after(newElement);



                }); // each

            } // success
  });


и если после этого цикла посчитать количество .elementList то выдаст 0, хотя на странице то что я вставил нормально отображается

kowapos 06.05.2014 21:12

вообщем, я понял, у меня почему то сначала считает элементы, а потом в цикле добавляет, и из за этого 0 получается. как мне посчитать после ajax запроса?

kowapos 06.05.2014 21:16

все, спасибо. помог метод done() после ajax

M-ka 06.05.2014 21:27

kowapos,
после цикла, который запущен в аяксе нет ф-ии, которая считает, по коду ранее, считалка запускается куда ранее, нежели отработает аякс...
Потому ф-ю считалку ставте на вызов из ответа аякса после each

$.ajax({ // аяксим
            type: 'POST',
            url: '/ajax/loadTreeAjax.php',
            dataType: 'json',
            data: {accept:1},
            success: function(data){
              
              //console.log(data.projects);
                $.each(data.projects, function (key) {
                    
                  newElement = '<div class="elementList" id = "project' + data.projects[key].id_project + '"><div class="ObjectTitle"><span class="glyphicon glyphicon-folder-open"></span> ' + data.projects[key].name + '</div><div class="dropdown objMenu"><a data-toggle="dropdown"><span class="tools glyphicon glyphicon-cog"></span></a><ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"><li><a href="javascript:;">Совместный доступ</a></li><li><a href="javascript:;">Маркер</a></li><li><a href="javascript:;">Добавить в "Избранное"</a></li><li><a href="javascript:;">Информация</a></li></ul></div></div>';

                  blockProjects.children('.TitleBlock').after(newElement);



                }); // each
                 //теперь после добавления контента, надо посчитать... для этого сделаем какую то yourFunction(){} на стороне...
                 yourFunction(); //будет находиться где то и содержать alert($('.elementList').size()); 
                 //Ну можно и сразу сделать вызов алерта, но все же это лучше вынести с обработки ответа, 
                 //так же и сам ответ передать во внешнюю ф-ю для обработки
            } // success
  });


Часовой пояс GMT +3, время: 00:18.