staffID
@staffID

Почему не отменяет реакция по умолчанию на событие?

При двойном клике по слою зум остается, хотя стоит event.preventDefault()
А при таком же обработчике, но клик по карте это работает, из-за чего так?

<!DOCTYPE html>

<html>

<head>
    <title>Map</title>
    <meta charset="utf-8">
    <script src="//api-maps.yandex.ru/2.0-stable/?load=package.standard,package.geoObjects,package.regions&lang=ru-RU" type="text/javascript"></script>
    <style type="text/css">
        html, body, #container {
            width: 100%;
            height: 100%;
        }
    </style>

	<script src="regions.js" type="text/javascript"></script>
</head>

<body>
    <div id="container"></div>
</body>

</html>

var lcln = {},
    fmap = function( geoMap, lang, color ) {
        ymaps.regions.load( lang, {
            lang: 'ru',
            quality: 3
        } ).then( function ( result ) {
            var lastCollection = result.geoObjects;
            lcln[ lang ] = lastCollection;
            lastCollection.options.set( {
                zIndex: 1,
                zIndexHover: 2,
                draggable: false,
                fillColor: color,
                strokeColor: color
            } );
            
            console.log( lastCollection.events );
            lastCollection.events.add( 'dblclick', function ( event ) {
                 event.preventDefault() // не отменяет зум по слою
            } );

            geoMap.geoObjects.add( lastCollection );
        }, function () {

        } );
    };

ymaps.ready( function () {
    geoMap = new ymaps.Map( 'container', {
        center:  [ 65, 104 ],
        type: "yandex#map",
        zoom: 4
    } );
    
    geoMap.events.add( 'dblclick', function ( event ) {
        event.preventDefault(); // а здесь отменяет зум по карте
    } );
    geoMap.behaviors.enable( 'scrollZoom' ); 
    
    var lng = 'ru',
        level = 3;
    
    fmap( geoMap, 'RU', 'rgba(13, 91, 58, 0.2)' );
    fmap( geoMap, 'UA', 'rgba(203, 37, 37, 0.2)' );
} );
  • Вопрос задан
  • 181 просмотр
Пригласить эксперта
Ответы на вопрос 2
dummyman
@dummyman
диссидент-схизматик
event.preventDefalult()
правильно
event.preventDefault()
Ответ написан
@Skit25
на всё воля Бога
Нужно не отменить клик, а отменить зум.
lastCollection.events.add( 'dblclick', function ( event ) {
                 zoom.nenado(); // логика будет другая, но суть в отмене зума при клике, а не клика при клике
            } );
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы