Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Удаление события mousemove (https://javascript.ru/forum/events/28164-udalenie-sobytiya-mousemove.html)

DesiresDesigner 09.05.2012 21:28

Удаление события mousemove
 
Добрый день, всех с праздником.
У меня наверняка дурацкая проблема, но решаю ее весь день.
в $(document).ready имеется вот такой код:
var newSelect = document.getElementById('subscription');
                        newSelect.onmousedown = function(){
                            $(".test").append("down!<br>");
                            var t = event.target || event.srcElement;
                            while (t.id == "")
                                t = t.parentNode;
                            document.onmousemove = function(){
                                $(".test").append("MOVE!<br>");
                                t.parentNode.move = true;
                                //alert("hello");
                                //t = t.getElementsByTagName("div")[0];
                            }
                            this.onmouseup = function(){
                                document.onmousemove = null;
                            }
  
                        };

То есть мне надо, чтобы при нажатии на объект образовывался слушатель mousemove. И чтобы он удалялся, когда кнопка мыши отпущена. В общем-то кое как я с этим справилась, но все-таки мне нужно немного другое, а именно: чтобы слушатель изменения положения мыши удалялся при "отпуске" мыши в любом месте окна, а не только на объекте subscription.

Заранее спасибо за подсказки.

bes 09.05.2012 21:55

Цитата:

Сообщение от DesiresDesigner
чтобы слушатель изменения положения мыши удалялся при "отпуске" мыши в любом месте окна, а не только на объекте subscription.

Почему бы тогда не сделать onmouseup у самого документа, а не у объекта subscription.

DesiresDesigner 09.05.2012 22:20

Цитата:

Сообщение от bes (Сообщение 173495)
Почему бы тогда не сделать onmouseup у самого документа, а не у объекта subscription.

Делала, не работает.

bes 09.05.2012 22:58

<input id="inp" type="button" value="click">
<div id="myDiv"></div>

<script>
inp.onmousedown = function() {
  document.onmousemove = function() {
    myDiv.innerHTML = 'x: ' + event.clientX + '<br>' + 'y: ' + event.clientY
  }
}

document.onmouseup = function() {
  document.onmousemove = null
}
</script>

DesiresDesigner 10.05.2012 16:59

Пыталась воспользоваться вашим кодом, как-то в моем контексте он не срабатывал. Так и не поняла, почему. Просто продолжила кодить (итоговый вариант выглядит немного по-другому, там должен происходить drag&drop на появившийся элемент), проблема сама собой как-то и иссякла.
Но спасибо за попытку помочь.

cyber 13.05.2012 21:08

писал скрипт недавно и была необходимость обнулить mousemove
вот как делал (может будет полезно вам)
slider.init=function(id , out) {
	var elem, out;
	out = document.getElementById(out);
	elem=document.getElementById(id);
// кнопка нажата
	elem.onmousedown=function (e) {
		
		e = e || window.event;
		slider.status = (
		(e.which != 'undefind' && e.which=="1") 
		|| e.button == "1"
		) ? true : false;
		
		slider.clickPos = slider.mousePosit(e) - slider.elemPos(elem); // определения места клика на  ползунке
		slider.objPos = slider.elemPos(elem.parentNode); // определение положение контейнера для ползунка
		slider.end = elem.parentNode.offsetWidth  -  elem.offsetWidth; // расчет конечной точки котейнера
	//процес движения начат
	document.onmousemove=function (e) {
		e = e || window.event;
		if (slider.status){
			slider.move(e, elem, out);
	document.body.onselectstart = function() { return false }
    document.ondragstart = function() { return false }

		}
	}
	
	}
	// процес окончен
	document.onmouseup = function ()
    {
	slider.status=false;
	document.onmousemove =null;
	}	
	
	}


Часовой пояс GMT +3, время: 17:02.