Набор результатов jQuery, сохраняющий заполнение - PullRequest
2 голосов
/ 29 августа 2010

У меня есть функция jQuery, которая выполняет вызов ajax, который создает строку HTML для заполнения функции <ul></ul>. проблема в том, что на странице есть ссылка, которая обновляет страницу, проблема в том, что HTML-код, добавивший вызов jQuery ajax, снова добавляет HTML-код на страницу, чтобы результат не удваивался. если вы сделаете это снова, результат будет добавлен снова.

Итак, мой вопрос: как я могу очистить HTML, чтобы результат повторялся несколько раз? или как лучше решить эту проблему?

// Развернуть копию в группу модальных групп $ (". groupZones .expand"). live ('click', function () { $ (это) .siblings ( 'контракт'.) шоу (). $ (this) .css ('display', 'none'); $ (this) .parent (). parent (). siblings ('. groupDetails'). css ('display', 'block'); $ (this) .parent (). parent (). siblings ('. groupDetails'). find ('ul.device'). find ('ul .list'). after (''); var cwpUserId = $ ('# ctl00_cphBody_hfCwpId'). val (); var groupId = $ (this) .parent (). siblings ('. add'). find ('input'). val (); sortOn = "Местоположение"; var mode = "dayparts"; var groupUl = $ (this) .parent (). parent (). siblings ('. groupDetails'). find ('ul'). find ('ul li.head'); var groupDetails = $ (this) .parent (). parent (). siblings ('. groupDetails'); // Получить информацию о зоне .. // Load.

            $.ajax({
                type: "POST",
                url: "ajax/DaypartMessagingGroups.asmx/GetDetailsForCopyToGroup",
                data: "{'groupId':" + groupId + ",'cwpUserId':" + cwpUserId + ",'pageNum':0,'pageSize':5, 'sortOn':'" + sortOn + "','sortDirection':'" + sortDirection + "','mode':'" + mode + "'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(msg) {
                    //$(btn).parents("ul.list-group-zones").children("li:.head").after(msg.d);
                    $(groupUl).after(msg.d);
                    $('.location').find('.contract').hide();

                    var copyZonePerPage = 5;
                    //var copyZoneItemsCount = $(groupUl).siblings('#hfAllGroupZones').val();
                    var copyZoneItemsCount = $('#hfAllGroupZones').val();
                    var copyZonePages = Math.ceil(copyZoneItemsCount / copyZonePerPage);
                    var copyZoneHtml = '';
                    var copyZoneCurLink = 0;
                    var current_copyzone_pagination_set = 1;
                    var num_of_pagination_shown = 0;
                    alert('Line 2113 CBG');

                    if (copyZonePages > 20) {
                        //var pagesAdded = (parseInt(current_copyzone_pagination_set) - 1) * 10;

                        while (num_of_pagination_shown < 20) {
                            copyZoneHtml += '<a class="page_link_clicked" longdesc="' + copyZoneCurLink + '">' + (copyZoneCurLink + 1) + '</a>';
                            copyZoneCurLink++;
                            num_of_pagination_shown++;
                        }

                        copyZoneHtml += '<a class="page_link" id="btnNextZoneSet" longdesc="' + copyZoneCurLink + '">...</a>';

                    }
                    else {
                        while (copyZonePages > copyZoneCurLink) {
                            copyZoneHtml += '<a class="page_link_clicked" longdesc="' + copyZoneCurLink + '">' + (copyZoneCurLink + 1) + '</a>';
                            copyZoneCurLink++;
                        }
                    }

                    $(groupUl).parent().parent().find('ul li.footer').html(copyZoneHtml);
                    $('.page_link_clicked[longdesc=0]').addClass('current');

                },
                error: function(err) {
                    var err = eval("(" + err.responseText + ")");
                    if (ShowModalLogin(err.ExceptionType)) {
                        alert("An error occurred.");
                    }
                }
            });

        });

Ответы [ 2 ]

1 голос
/ 29 августа 2010

Перед тем, как вставить содержимое из строки, я бы спросил <ul>, является ли оно пустым.

var $ul = $('#myUL');

if( $ul.is(':empty') )
   $ul.append( content );

или более короткая версия:

$('#myUL:empty').append(content);

Обратите внимание, что :empty означает полностью пустое, включая пробелы.


РЕДАКТИРОВАТЬ:

Еслиобновление страницы является ненужным побочным эффектом какого-либо другого действия, вы можете предотвратить его в своем обработчике для тех элементов <a>, используя event.preventDefault().

$('a.myLink').click(function( e ) {
    e.preventDefault(); // prevents the default behavior of the <a> element.
    // run your code
});
0 голосов
/ 29 августа 2010

Предполагая, что добавляемый вами контент заключен в контейнер (ваш <ul>), просто очистите содержимое контейнера перед добавлением нового содержимого.

Для этого можно использовать функцию jQuery .remove ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...