簡體   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