Событие изменяемого размера jquery не заканчивается - PullRequest
1 голос
/ 03 марта 2012

Я делаю интерактивный интерфейс и использую jquery для изменения размера и событий мыши.

Я связываю mouseOver и событие click для всех элементов, и когда я получаю щелчок, я удаляю слушателя щелчка (чтобы он не мешал слушателям с изменяемым размером).

до сих пор это работало нормально, теперь размер выбранного элемента можно изменить. запуск изменения размера работает нормально, , но даже после mouseup событие изменения размера элемента не заканчивается, его размер все еще изменяется с помощью мыши.

что не так?

вещь находится здесь.

http://parth.me/builderjs/index.html

Основные части:

var
  inspect = true,           // to disable inspect
  selected = null;          // currently selected event

function clickhandler(e) {
  console.log('click');
  if (selected != null)return;     // if some div is already selected, then return
  if (e.which == 3)return;         // if it was right click, return
  selected = $(e.target);          // selected = the element which received the click
  inspect = false;                 // disable inspection
  selected.addClass('selected');   // add SELECTED background + border
  $(window).unbind('click', clickhandler);  // remove the click listener
  $('.selected').resizable();               // make the selected element resizable
}

$(window).bind('click', clickhandler);    //bind the click event

Клавиша «Esc» привязана для отмены выбора.

1 Ответ

1 голос
/ 03 марта 2012

ContextMenu (который прослушивает событие щелчка мышью) взаимодействует с событием конца изменения размера (которое также хочет событие щелчка мышью).Решение:

  $('.selected').resizable({
    start:function () {
      $("*").destroyContextMenu();
      console.log('resize started');
    },
    stop:function () {

      $("*").contextMenu({
          menu:'myMenu'
        },
        function (action, el, pos) {
          console.log(el);
          eval(action + '(el)');
        });
      console.log('resize stopped');
    },
    resize:function () {
      console.log("resize happened");
    }
  });

То, что я сделал, уничтожил контекстное меню, как только началось изменение размера, чтобы больше не слушать событие щелчка мышью.и верните его, когда закончится событие изменения размера.

...