Задать вопрос

Firefox + sortabble: как получить доступ к элементу, который был сдвинут?

Разметка страницы
<head>
  <script src="/static/js/jquery-1.10.2.min.js"></script>
  <script src="/static/js/jquery-ui-1.10.3.custom.min.js"></script>
  <script>var ajaxPath = '/_loads/admApi/changePosition/0';</script>
  <script src="/_loads/static/js/categories.js"></script>
</head>
<body>
  <!-- ... -->
  <!-- Content section begin -->
  <ul class="links" id="draggable">
    <li id="4">
        <a href="/_loads/category/4"><img src="/static/images/star.png" alt="cat" />&nbsp;Category</a>
    </li>
    <li id="1">
        <a href="/_loads/category/1"><img src="/static/images/star.png" alt="cat" />&nbsp;games</a>
    </li>
    <li id="5">
        <a href="/_loads/category/5"><img src="/static/images/star.png" alt="cat" />&nbsp;Category 2</a>
    </li>
    <li id="3">
        <a href="/_loads/category/3"><img src="/static/images/star.png" alt="cat" />&nbsp;ololo</a>
    </li>
  </ul>
  <!-- ... -->
  </body>


Содержимое файла /_loads/static/js/categories.js
$(document).ready(function(){
    var container = $('#draggable');
    container.sortable({
        items: 'li',
        containment: 'parent',
        tolerance: 'pointer',
        scroll: false,
        opacity: 0.9,
        cursor: 'hand',
        update: function(event) {
            var li = event.toElement.parentNode;
            var category, currentPosition, children;
            if(li.tagName == 'A') {
                li = li.parentNode;
            }
            category = li.id;
            children = container[0].getElementsByTagName('li');
            for(var i = 0; i < children.length; i++) {
                if(category == children[i].id) {
                    currentPosition = i + 1;
                }
            }
            $.get(ajaxPath, {
                currentPosition: currentPosition,
                category: category
            }, function(data) {
                if(data !== '') {
                    container.sortable('cancel');
                    alert(data);
                }
            });
        }
    });
    container.disableSelection();
});


Callbak на событие update получает id передвинутого элемента, определяет его новую позицию и отправляет эти данные скрипту. В Яндекс.Браузере все ок. Но Firefox ругается на то что event.toElement is undefined.
Подскажите как в Firefox можно получить доступ к передвигаемому элементу?
  • Вопрос задан
  • 2923 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 2
Stillborn
@Stillborn
web-developer, web-designer
smilingcheater
@smilingcheater
А почему вы не используете второй параметр, приходящий в функцию update? Судя по документации api.jqueryui.com/sortable/#event-update вы можете просто использовать ui.item для получения текущего перемещенного элемента и ui.item.attr('id') для получения его ID. Так же, для вычисления порядкового номера этого элемента, можно использовать ui.item.index() (api.jquery.com/index) раз у вас есть jQuery.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@mmka
вообще фаерфокс начал немного бесить в последнее время
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы