繁体   English   中英

为什么通过带有gmap事件点击监听器的jQuery将自定义类添加到主体时,为什么我的自定义类未应用于主体?

[英]Why my custom class is not applied to body when adding it through jQuery with gmap event click listener?

单击gmap标记时,我想打开幻灯片菜单,但不能。 这是我如何实现这一目标的方法:

google.maps.event.addListener(marker, 'click', function () {  
    $('body').toggleClass("side-panel-open");
    if( $('body').hasClass('device-touch') ) {
       $('body').toggleClass("ohidden");
    }
    return false;
});

当我以这种方式管理按钮时,同样的事情也可以正常使用:

$("#test").click(function(){
    $('body').toggleClass("side-panel-open");
    if( $('body').hasClass('device-touch') ) {
        $('body').toggleClass("ohidden");
    }
    return false;
});

如您所见:

http://www.themes.krown.ch/canvas4/HTML/index-fullscreen-image_test.html

页脚上的“测试”按钮运行正常。 不幸的是,当单击gmap标记时,没有任何反应。 我在Firebug上看到身体上发生了某些事情,但是类“ side-panel-open”并没有消失。

我还尝试通过这种方式将一个类添加到主体:

$('body').addClass('side-panel-open');

与第一个代码一样,没有任何反应。 这很奇怪,因为如果我尝试添加另一个类,例如“ class_name”。 此类将按预期应用于身体:

$('body').addClass('class_name');

文档: https : //developers.google.com/maps/documentation/javascript/examples/event-simple

对于按钮,您可以使用jQuery click event如果您使用的是其他JavaScript框架,则它们也可能也会具有click事件。 对于jQuery,您需要执行以下操作:

$('#boundaries-states').click(function () {
//Do something
});

看起来addListener方法采用google Map对象,而不是地图的HTML元素。 在这里看第一个例子。 对某些事件感兴趣的程序将为这些事件注册JavaScript事件侦听器,并在通过调用addListener()在对象上注册事件处理程序而接收到这些事件时执行代码。

因此,如果还没有,则需要保留实例化地图时返回的对地图的引用:

var map = new google.maps.Map(document.getElementById('boundaries-states'),
mapOptions);
Once you have your map reference, you can add a listener using the map object, rather than the HTML element.

google.maps.event.addListener(map, 'click', function() {
alert('clicked');
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM