Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.01.2013, 17:25
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Перемещение объектов, ff
Добрый день!

У меня есть список, элементы списка можно менять местами перетаскивая их мышкой. В хроме работает шикарно, и в мозиле, если тащить не за текст, а за пустое место элемента списка. Если тащить за текст, то браузер пытается перетащить сам текст (чтобы скопировать) и начинает глючить.

У есть идея закрывать текст дивом, но решение не красивое.

(user select none поставил)

Главная часть кода:
//Конструктор
    var Line = function ($dom) {
        this.$ = $dom;
        this.$.data('line', this);
        this.body = null;
        this.index = null
        this.init();
    };
//Инициализация обработчиков
    Line.prototype.init = function () {
        this.$.mousedown(this.handlers.onMouseDown);
        this.body = bodyArray[index];
        this.index = index;
        index++;
        (this.$.hasClass('selected')) ? this.body.addClass('selected') : false;
    };
//Назначение обработчиков
    Line.prototype.handlers = {
        onMouseDown: function (e) {
            var line = $(this).data('line');
            line.onMouseDown();
        },
        onMouseUp: function () {
            Line.getActive().onMouseUp();
        },
        mouseMove: function (e) {
            var line = Line.getActive();
            line.onMuve(line.getY(e));
        }
    };
//Обработчики:

    Line.prototype.onMouseDown = function () {
        Line.setActive(this);
        Line.setSelected(this);
        $(document).bind('mousemove', this.handlers.mouseMove);
        $(document).bind('mouseup', this.handlers.onMouseUp);
        Line.parent.toggleClass('noneUserSelect');
        this.select();
    };

    Line.prototype.onMuve = function (y) {
        if (!this.isLast()) {
            if (y > this.getNext().getCenter()) {
                this.insertAfter(this.getNext());
            }
        }
        if (!this.isFirst()) {
            if (y < this.getPrev().getCenter()) {
                this.insertBefore(this.getPrev());
            }
        }
        clearSelection();
    };

    Line.prototype.onMouseUp = function () {
        $(document).unbind('mousemove', this.handlers.mouseMove);
        $(document).unbind('mouseup', this.handlers.onMouseUp);
        Line.setActive(null);
        Line.parent.toggleClass('noneUserSelect');
        this.showBody();
        if (this.isFirst()) {
            this.$.removeClass('li_second');
        }
        clearSelection();
    };

Последний раз редактировалось tsigel, 30.01.2013 в 17:29.
Ответить с цитированием
  #2 (permalink)  
Старый 30.01.2013, 18:01
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Решил проблему. Браузер пытался скопировать не текст, а ссылку (в списках лежали ссылки), заменил на спан и все заработало.

Всем спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перемещение объектов, последовательность событий prizrak39 Events/DOM/Window 3 19.11.2012 13:42
Как найти точки соприкосновения двух объектов в RaphaelJS Fatalityap Библиотеки/Тулкиты/Фреймворки 3 03.08.2012 16:33
Перемещение объектов по рабочей области maxmsmax Javascript под браузер 6 22.09.2011 16:38
Массив объектов или объект объектов vladlen Общие вопросы Javascript 19 30.10.2010 03:10
Быстрый поиск объектов Shasoft Общие вопросы Javascript 7 30.07.2009 05:28