2012-09-01 5 views
3

span이 포함 된 div가 있습니다. 나는 마우스 업과 mousedown 이벤트가있어서 div를 누르면 발동됩니다. 그러나 올바르게 작동하지 않습니다. 그냥 MouseDown 이벤트가 아니라 mouseup에 감지, 드래그하려고 다음 텍스트를 선택하면 http://jsfiddle.net/Ym7rM/jQuery mouseup이 올바르게 감지되지 않습니다.

과 :

이 바이올린으로 이동하십시오.

내가 뭘 잘못하고 있니? 크롬을 사용하고 있습니다.

감사

편집 :

미안 해요, 질문, 새로운 바이올린을 참조 단순화.

+0

마우스가 이벤트에 연결된 요소 위에 마우스가 없다면 왜 mouseup 이벤트가 실행됩니까? – j08691

+0

그것이 그렇다면, 왜 mousedown 발사입니까? – Alvaro

+0

mousedown이 (가) 발포하는 이유는 무엇입니까? – j08691

답변

6

mouseup 이벤트가 올바르게 감지되고 있습니다. 드래그를 수행 한 후에 브라우저가 mouseup 이벤트를 발생시키지 않는 것입니다. 이는 브라우저의 의도적 인 동작입니다. 또한 의도하는 동작을 포함 시키려면 dragend 이벤트를 수신해야합니다.

+0

mouseup 대신 dragend를 사용하면 올바르게 작동하지만 차이점은 무엇입니까? – Alvaro

+3

무언가를 끌면 일부 마우스 이벤트가 끌기 이벤트로 바뀝니다. 즉, mousemove는'drag'되고'mouseup'은'dragend'가됩니다. 드래그 이벤트에서 핸들러에 전달 된 JavaScript 이벤트 객체는 드래그 이벤트에 'dataTransfer'라는 새 객체가 포함되어 있다는 점에서 마우스 이벤트와 다릅니다. –

+0

두 가지 모두 해답과 설명에 감사드립니다. 끌기 이벤트를 자세히 살펴야합니다. – Alvaro

-1

mouseup 이벤트가 주황색 div 내부에서만 발생합니다. 당신이 코딩 한 것이죠. 이것을 시도하십시오 http://jsfiddle.net/ur8J9/5/

+2

감사합니다. 편집 된 질문을 참조하십시오. 귀하의 바이올린은 정확하게 내 문제를 보여줍니다 : 단지 mousedown, 해고가 아니라 mouseup. – Alvaro