2013-09-27 4 views
1

잠재적 인 해결책을 찾았지만 제대로 작동하지 않습니다.지도의 이벤트 스크롤을 사용 중지합니다.

$('svg') 
    .on("mousewheel.zoom", null) 
    .on("DOMMouseScroll.zoom", null) // disables older versions of Firefox 
    .on("wheel.zoom", null); 

문제는지도가 클릭 이벤트에서 다시 그려지는 것입니다. 경우에 따라 줌 이벤트가 초기화되지 않고 스크롤이 SVG 요소를 통해 여전히 캡처됩니다. 스크롤이 '캡쳐'되면 페이지가 스크롤되지 않습니다 (원하는 동작이 아님). 프로그래밍 방식으로 SVG를 확대/축소하기 위해 스크롤 이벤트 캡처를 사용하지 않도록 설정하는 방법이 있습니까?

D3는 즉시 구속하는 것, 그리고 심지어 명시 적으로 극단적 인 바인딩을 방해 시도했다 :이있을 수 있습니다

$('.map-container, #map, g, svg, d3, div').off('scroll').unbind('scroll').undelegate('scroll'); 
$(window).off('scroll').unbind('scroll').undelegate('scroll'); 
$(document).off('scroll').unbind('scroll').undelegate('scroll'); 

등, 혹은 D3가이었다 바인딩의 내 기본 지식에 실패 매우 탄력적 인 방식으로 제작되었습니다.

아이디어가 있으십니까?

$('svg').on('mousewheel DOMMouseScroll', function(e) { 
    e.preventDefault(); 
}); 
+1

소스 코드를 수정하지 않고 명시 적으로 해제 할 수는 없지만 이벤트 처리기에서 이벤트 소스를 확인하고 스크롤에서 오는 경우 무시할 수 있습니다. –

답변

3

솔루션

이 우선 순위가 정확지고, 그리고 사용의 문제였다 (! 어떤 답변을 설명해주십시오 경우이 나에게 호기심)

0

내 추측이다 네이티브 함수. 호출 할 때

이 내가이 다른 사람이 도움이되기를 바랍니다 등

$('.myClass').on('click',function() { 
    d3.select('#map') 
    .on("mousewheel.zoom", null) 
    .on("DOMMouseScroll.zoom", null) 
    .on("wheel.zoom", null); 
}); 

을 클릭 버튼을 통해 작동합니다!

+0

슬프게도 안돼 ... 내게 얼굴을 쳐다보고있는 것을 보여 주셔서 고마워, 콤보 – roberthuttinger

+0

이것은 질문에 대한 답변을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남겨 둡니다. – RedEyedMonster

+0

@RedEyedMonster 항상 모든 질문에 대해 100 % 정확한 대답은 아닙니다. 사실, 대부분의 경우 ** ** 작동합니다. 결국 허위로 판명 된 모든 대답에 대해 의견을 말합니까? –

관련 문제