jQuery Нежелательный сброс DOM на history.back (-1) - PullRequest
1 голос
/ 13 января 2012

У меня есть этот скрипт ниже, используемый на этом сайте http://ronnidc.dk. ..

Когда пользователь проверяет, например, [янв] точка появляется на карте ниже. И когда пользователь щелкает точку, под картой появляется тизер, содержащий ссылку на дополнительную страницу. Это все работает как задумано.

Задача 1 : Проблема в том, что пользователь возвращается на главную страницу по ссылке (history-1). После этого все флажки будут сняты, а точки и текст тизера вернутся к основанию. За исключением Firefox - он отлично работает в Firefox. Я предполагаю, что проблема как-то связана с перезагрузкой DOM во всех других браузерах, кроме Firefox? (Я хочу, чтобы флажок, точки на карте и выбранный текст тизера оставались видимыми, когда пользователь вернется на страницу с картой).

Как мне избежать этой проблемы? С какой-то функцией .live? (устарело в jQuery 1.7)

Задача 2 : Когда пользователь проверяет [все], все флажки отмечаются как задумано. Но чтобы иметь смысл, флажок [Все] должен исчезнуть, когда один из других флажков снят. (Оставшиеся флажки должны оставаться отмеченными)

Как это можно сделать?

/**functions.js**/ 

$(document).ready(function () {

/* =Filtering - (mark the map with dots)
----------------------------------------------- */
    $(function () {

        $('#filtering :checkbox.checkall').click(function () {
            $(this).parents('fieldset:eq(0)').find(':checkbox').attr('checked', this.checked);
        });


            $("#filtering :checkbox").attr('checked', null); //uncheck checkboxes on page reload in Firefox
            $("#filtering :checkbox").click(function() {
                $("#pageTeaser article mark").hide();
                $("#filtering :checkbox:checked").each(function() {
                    $("." + $(this).val()).show();
                });
            });

    });



/* =Teaser Show - (Showing teaser text when clicking the dot's)
----------------------------------------------- */
    $('#pageTeaser article mark').click(function() {
        $('#pageTeaser article .inner').hide();
        $('#pageTeaser article .inner').removeClass('active');
        $(this).siblings('.inner').show();
        $(this).siblings('.inner').addClass('active');
    });

});

1 Ответ

1 голос
/ 13 января 2012

Вы должны где-то хранить это состояние (все статусы флажков): cookie, location.hash, url,… может быть history.js может помочь вам здесь.

...