drag & click на одном элементе JS

230
11 августа 2017, 01:12

Есть такой код:

                $this.Move = false;
                Block.mousedown(function (e) {
                    $this.Move = false;
                    let target  =$(e.target);
                    if (target.is(Block) || target.closest(Block).length > 0) {
                        console.log('start moved');
                        Block.attr('data-move', true);
                        let pOffset = $(e.target).closest(Block).offset();
                        localStorage.setItem('relOX', Math.round(e.pageX - pOffset.left));
                        localStorage.setItem('relOY', Math.round(e.pageY - pOffset.top));
                    }
                });
                Block.mouseup(function (e) {
                    if($this.Move) {
                        console.log('pin');
                        if(Block.attr('data-move').bool()) {
                            Block.attr('data-move', false);
                            Block.attr('data-moved', false);
                            let pWidth = $('body').innerWidth();
                            let pMiddle = pWidth / 2;
                            let pHeight = $('body').innerHeight();
                            let pos = JSON.parse(localStorage.getItem('online-icon-pos'));
                            if (pos.x < pMiddle) {
                                Block.css({'top': pos.y, 'left': (pos.x = 0)});
                            } else if (pos.x > pMiddle) {
                                Block.css({'top': pos.y, 'left': (pos.x = (pWidth - Number(openChat.outerWidth(true))))});
                            } else {
                                Block.css({'top': pos.y, 'left': (pos.x = 0)});
                            }
                            localStorage.setItem('online-icon-pos', JSON.stringify({y: pos.y, x: pos.x}));
                        }
                    } else {
                        console.log('open');
                        Block.attr('data-move', false);
                        Block.attr('data-moved', false);
                        $(this).fadeOut(200, function () {
                            block.fadeIn(200, function () {
                                $(this).animate({
                                    right: 0
                                }, 200);
                            });
                        });
                    }
                    $this.Move = false;
                });
                $(document).mousemove(function (e) {
                    //if(!$this.Move) return;
                    if(Block.attr('data-move').bool()) {
                        $this.Move = true;
                        let relX = Number(localStorage.getItem('relOX'));
                        let relY = Number(localStorage.getItem('relOY'));
                        let y = e.pageY - relY;
                        let x = e.pageX - relX;
                        localStorage.setItem('online-icon-pos', JSON.stringify({y: y, x: x}));
                        Block.css({'top': y, 'left': x});
                        Block.attr('data-moved', true);
                    }
                });

Block - элемент по которому кликают или перемешают.

block - элемент который должен открыться при клике на Block

Проблема в том что простой клик не отрабатывает. Перемещение работает, а если просто нажать то нет. Консоль выведет: start move и при отпускании pin.

Что не так в коде?

READ ALSO
navigator.registerProtocolHandler аналог для обработчика на диске

navigator.registerProtocolHandler аналог для обработчика на диске

Необходимо для Chromium установить обработчик протокола tel

189
Изменение фона ссылки

Изменение фона ссылки

Есть поле ввода и ссылкаЕсли условие не выполнено, то ссылка должна отключаться и изменяется текст

260
Вопрос с promises в JavaScript

Вопрос с promises в JavaScript

Я открываю код через ChromeСначала в консоли появляется Оп2

238
Как составить регулярное выражение js?

Как составить регулярное выражение js?

Здравствуйте, помогите составить регуляркуЕсть строка, если в строке например есть 453|571 то взять все что до " " (пробела)

216