0

我正在使用 Leaflet 制作带有图层选择器的地图,并使用 jQuery 绑定到由 Leaflet 图层选择器制作的收音机。我可以使用以下代码查看在警报中选择了哪个收音机

$("[name='leaflet-base-layers']").change( function () {
    alert('Layers selected: ' + $(this).parent().text());
});

我想知道如何将该数据存储为 Javascript 变量以进行比较

if (ExampleVariable == "Phoenix") {
map.panTo([33.4314,-112.0747]);
}

有什么办法可以做到这一点,如果没有,我该如何使用 jQuery 的内部数据存储来做到这一点?

4

4 回答 4

0

你的意思是这样的吗?

var lastSelected = null; // if you need it later for anything

$("[name='leaflet-base-layers']").change(function(){

    var text = $(this).parent().text();

    lastSelected = text;

    // use the text for anything
    switch(text) {
        case "Phoenix":
            map.panTo([33.4314,-112.0747]);
            break;
        case "SomethingOther":
            map.panTo([10, 120]);
            break;
    }

});
于 2013-07-30T18:26:25.473 回答
0
$("[name='leaflet-base-layers']").change( function () {
    alert('Layers selected: ' + $(this).parent().text());
    ExampleVariable = $(this).parent().text();
});
于 2013-07-30T18:26:28.727 回答
0

您可以将值保存到全局声明的变量中

var selLayer; // global

$( "[name='leaflet-base-layers']" ).change(function () {
  selLayer = $( this ).parent().text();
});

或者,使用 jQuery 数据存储作为

$( "[name='leaflet-base-layers']" ).change(function () {
  $( this ).data( "selLayer", $( this ).parent().text());
});

if ($( "[name='leaflet-base-layers']" ).data( "selLayer" ) === "Phoenix") {
  map.panTo( [33.4314,-112.0747] );
}

理想情况下,您应该存储传单层元素以避免一次又一次的 jQuery 查找。

var $leafletBase = $( "[name='leaflet-base-layers']" );
于 2013-07-30T18:28:53.407 回答
0

最简单的方法是这样的:

$("[name='leaflet-base-layers']").change(function() {
    leafletText = $(this).parent().text());
});

请注意,如果您在该分配中使用var关键字,您将在以后的比较中遇到范围问题,因为在该特定函数之外无法访问该变量。通过省略var关键字,您将 var 置于全局上下文中,这是您通常应该尽可能避免的事情。

我强烈建议学习变量范围,因为它是一个重要的概念。

于 2013-07-30T18:29:07.847 回答