2010-03-12 4 views
0

이 코드를 살펴 : 그것은해야으로 sliderMouseUp 함수가 호출 될 때까지문서에서 removeEventListener 사용이 작동하지 않습니까?

$(document).ready(function() { 
    document.getElementById(sliderId).onmousedown = sliderMouseDown; 
}); 

function sliderMouseDown() { 
    document.onmousemove = sliderMouseMove; 
    document.onmouseup = sliderMouseUp; 
} 

function sliderMouseMove() { 
    $('#test').html("sliding"); 
} 

function sliderMouseUp() { 
    $('#test').html("not sliding"); 
    document.removeEventListener('mousemove', sliderMouseMove, false); 
    document.removeEventListener('mouseup', sliderMouseUp, false); 
} 

모든 것이 작동합니다. 이제이 함수는 괜찮습니다. # test-div는 "슬라이딩하지 않음"이라고 말합니다.하지만 나중에 마우스를 문서에서 움직이면 removeEventListener 함수처럼 # test-div에 "sliding"이 다시 표시됩니다. 작동하지 않습니다. 내가 여기서 뭔가 잘못하고있는거야? JQuery와 옵션, 그리고 당신이 그것을 사용하고 있기 때문에 그것이 보인다면

+2

jQuery를 사용하는 경우이 이벤트를 사용하여 이벤트를 처리해야합니다. – scunliffe

답변

4

, 이렇게 :

$(function() { 
    $("#" + sliderId).mousedown(function() { 
    $(document).mousemove(function() { 
     $("#test").html("sliding"); 
    }).mouseup(function() { 
     $("#test").html("not sliding"); 
     $(document).unbind("mousemove mouseup"); 
    }); 
    }); 
}); 

을 많이 발생합니다 JQuery와 이벤트 모델을 사용하면 적은 헤어 당겨, 그것은 알아서 브라우저 간 및 이벤트 괴물에 대한 정보를 제공합니다.

+0

고맙습니다. 저는 사용자 정의 크로스 브라우저 스크립트 작업을 시작했습니다. 처음에는 # test-div를 "미끄러 뜨린"후 스크립트 (파이어 폭스에서만 사용 가능, IE는 정상적으로 작동합니다)를 사용했지만 한 가지 문제가있었습니다. 파이어 폭스는 두 번째 마우스 위 어딘가에 div를 "드래그"하고 싶다고 생각합니다. 브라우저에서 그림을 드래그하는 것과 같습니다. –

+0

IE 이외의 브라우저에서 알려진 문제로 보입니다. 직접 살펴 보겠습니다. 어쨌든, 도와 주셔서 감사합니다 –

+0

@ user281434 - 환영합니다 :) 더 많은 문제가 발생하면 여기에 다른 의견을 남겨 두십시오. 그러면 팝업이 표시되어 도움을 드리겠습니다. –

관련 문제