javascript - 单击按钮之前控件激活

标签 javascript jquery openlayers jquery-events

我有一个自定义工具栏,可以在单击 html 按钮时触发事件,但有一个问题,它是在 init 上激活的,而不是在单击按钮后激活的。它似乎在 init 上触发了该功能。 控件切换正确,但似乎默认情况下或在 init 内激活。

这是代码:

/* other Controls */   
    polygon: new OpenLayers.Control.Measure(
        OpenLayers.Handler.Polygon, {
            persist: true,
            immediate: true,
            handlerOptions: {
                layerOptions: {
                    renderers: renderer,
                    styleMap: styleMap
                }
            }
        }   
    ),
    choose: new OpenLayers.Control.Button({ /** **/
        activateControl: false,             /** Problem here **/
        trigger: tochiSentaku()             /** **/
    })
};

var control;
for(var key in allControls) {
    control = allControls[key];
    control.events.on({
        "measure": handleMeasurements,
        "measurepartial": handleMeasurements,
        "button": tochiSentaku
    });
    map.addControl(control);
}

function toggleControl(element){
    for(key in allControls){
        var control = allControls[key];
        if(control.active){
            control.deactivate();
        }
        if(element.value == key && element.click){
            control.activate();
            vlayer.removeAllFeatures();
            var mybutton = document.getElementById('output');
            var xyz = "";
            mybutton.innerHTML = xyz;
        }
        else{
            control.deactivate();
        }
        
    }
}

tochiSentaku 函数

function tochiSentaku(evt){
    var element = document.getElementById("attribute");
    map.events.register('click', map, function(e){
        vlayer.destroyFeatures(vlayer,features);
        var coord = $(".olControlMousePosition").text();
        
        $("#attribute").html('<center><img src="images/loading.gif" alt="Now Loading..." /></center>');
        $.getJSON("scripts/tochi_sentaku.php",{coord:coord}, function(data){
            $("#attribute").html("<button id=\"attribute_map\" onclick=\"" + data.the_geom + "\">地図</button><table id='attribute_tbl'><tr><th>項目名</th><th>値</th></tr></table>");
            for(var key in data){
                if(key != "the_geom"){
                $("#attribute_tbl").append("<tr><td>" + key + "</td><td>" + data[key] + "</td></tr>");
                }
            }
            $("#attribute_map").click();
        });
    });
}
 

如果有人能给我一些建议,我将不胜感激。

最佳答案

您尚未在代码片段中提供 tochiSentaku 的定义。

但我最初的猜测是,将代码更改为

choose: new OpenLayers.Control.Button({
    activateControl: false,
    trigger: tochiSentaku
})

关于javascript - 单击按钮之前控件激活,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8265560/

相关文章:

javascript - 如何使用bootstrap datetimepicker获取三个月后的日期?

geometry - 创建任意的曲线众所周知的文本行字符串以在 OpenLayers 中显示

javascript - JavaScript 中的 DOM 和 BOM 是什么?

javascript - 在 fabric js 中使用事件处理程序 (.on) 将数据发送到函数

php - 在不从 PHP 脚本解析到 ajax 脚本的情况下返回 native 文本

javascript - Openlayers 和捕获拖动事件

jquery - 在加载 openlayers map 时使用 jQuery 选项卡遇到问题

javascript - JS 判断是否有子输入为空

java - JQGrid - 使用 IE9 加载 JQuery 数据

javascript - Meteor 无法更新 mongo?