Помоги отвязать функцию от jquery.
Добрый день. Есть функция прокрутки на jquery:
function scroll_page(){
var scr = $(".scroll-js");
scr.mousedown('click', function (event) {
var startX = this.scrollLeft + event.pageX;
var startY = this.scrollTop + event.pageY;
scr.mousemove('click', function (event) {
this.scrollLeft = startX - event.pageX;
this.scrollTop = startY - event.pageY;
return false;
});
});
$(window).mouseup(function() {
scr.off("mousemove");
});
}
Переписал так, пока для getElementById:
function scroll_page(){
var scr = document.getElementById('scroll');
scr.addEventListener("mousedown", function(e){
var startX = this.scrollLeft + e.pageX;
var startY = this.scrollTop + e.pageY;
scr.addEventListener("mousemove", function(e){
this.scrollLeft = startX - e.pageX;
this.scrollTop = startY - e.pageY;
return false;
});
});
window.addEventListener("mouseup", function(){
scr.removeEventListener("mousemove");
});
}
В конце при отпускании мышки ошибка, говорит для этой строки нужен второй аргумент.
scr.removeEventListener("mousemove");
Вроде как нужна функция, но я не могу сообразить как написать :-? Помогите пожалуйста, с учетом того что потом буду делать это для getElementsByClassName |
Если необходимо обрабатывать движение мыши при нажатой лкм, то лучше добавить флаг, который будет показывать нажата ли лкм или нет.
Как удалить обработчик смотрите тут: https://learn.javascript.ru/introduc...eeventlistener |
Nexus,
Написал так, ошибка пропала но отжатие мышки не прекращает mousemove:
function scroll_page(){
var scr = document.getElementById('scroll');
var startX, startY;
var listener = function(e) {
startX = this.scrollLeft + e.pageX;
startY = this.scrollTop + e.pageY;
scr.addEventListener('mousemove', endListener);
};
var endListener = function(e) {
this.scrollLeft = startX - e.pageX;
this.scrollTop = startY - e.pageY;
return false;
};
scr.addEventListener('mousedown', listener);
window.addEventListener("mouseup", function(){
scr.removeEventListener('mousedown', endListener);
});
}
Что не так сделал?( |
Сейчас "не работает" так:
<div id="scroll" style="height: 100px; width: 200px; background-color: #444; color:white;overflow: hidden;">123<br>sadsa<br>123<br>111<br>123<br>4tr<br>fdfs<br>123<br>ere<br>eerr<br>123<br>123<br>dfdf<br>dfdd<br>dfdf<br></div>
<script>
window.onload = function() {
scroll();
}
function scroll(){
var scr = document.getElementById('scroll');
var startX, startY;
var listener = function(e) {
startX = this.scrollLeft + e.pageX;
startY = this.scrollTop + e.pageY;
scr.addEventListener('mousemove', endListener);
};
var endListener = function(e) {
this.scrollLeft = startX - e.pageX;
this.scrollTop = startY - e.pageY;
return false;
};
scr.addEventListener('mousedown', listener);
window.addEventListener("mouseup", function(){
scr.removeEventListener('mousedown', endListener);
});
}
</script>
|
Нашел ошибку, заработало =)
<div id="scroll" style="height: 100px; width: 200px; background-color: #444; color:white;overflow: hidden;">123<br>sadsa<br>123<br>111<br>123<br>4tr<br>fdfs<br>123<br>ere<br>eerr<br>123<br>123<br>dfdf<br>dfdd<br>dfdf<br></div>
<script>
window.onload = function() {
scroll();
}
function scroll(){
var scr = document.getElementById('scroll');
var startX, startY;
var listener = function(e) {
startX = this.scrollLeft + e.pageX;
startY = this.scrollTop + e.pageY;
scr.addEventListener('mousemove', endListener);
};
var endListener = function(e) {
this.scrollLeft = startX - e.pageX;
this.scrollTop = startY - e.pageY;
return false;
};
scr.addEventListener('mousedown', listener);
window.addEventListener("mouseup", function(){
scr.removeEventListener('mousemove', endListener);
});
}
</script>
|
| Часовой пояс GMT +3, время: 15:33. |