jQuery: перетаскиваемые бары - помните позицию с cookie? - PullRequest
2 голосов
/ 06 июня 2011

Эй, ребята, Я не могу заставить его работать. У меня есть перетаскиваемые черные полосы, которые служат навигацией поверх содержимого.

Я просто хочу, чтобы браузер запомнил положение баров с cookie. Всякий раз, когда пользователь перетаскивает полосы и щелкает что-то еще (страница обновляется), полосы должны оставаться на последней позиции.

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

Я построил быстрый пример. Может быть, вы знаете, что я делаю не так здесь: http://jsfiddle.net/RZQ8H/

$("ul.bars li").draggable({
     stop: function(event, ui) {
         var currentPos = $(this).position();
         var currentTop = Math.round(currentPos.top);

         // save cookie when stopped dragging
         $.cookie('position' + $(this).index('li').toString(), currentTop.toString());
     }
});

Позиция при загрузке страницы ...

// initial position of elements
$("ul.bars li").each(function() {

        // if no cookie is set (first visit to page) all bars should be distributed
        // randomly across the document

        if ( $.cookie('position'+ $(this).index('li').toString()) ) {
            var doc = $(document).height() - 50;

            // random distribution of elements
            $("ul.bars li").each(function() {
                var randPos = Math.random(0)*doc;
                $(this).css('top' , randPos+'px');
            });

        } else { 

            // if a cookie exists (the bars have already been dragged)
            // remember the position

            var savedPos = $.cookie('position' + $(this).index('li').toString());            

            $(this).css({ top: savedPos + 'px' });
        }

});

1 Ответ

0 голосов
/ 06 июня 2011

Вы ошиблись в своем состоянии:

if ($.cookie('position'+ $(this).index('li').toString()) ) {

            // random distribution of elements


        } else {

            // if a cookie exists (the bars have already been dragged)
            // remember the position

        }

Поменяйте его местами, чтобы при наличии файла cookie он не распределялся случайным образом.

   if (!$.cookie('position'+ $(this).index('li').toString()) ) {

Пример: http://fiddle.jshell.net/RZQ8H/3/show/

...