我正在使用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的内部数据存储来做到这一点?
答案 0 :(得分: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;
}
});
答案 1 :(得分:0)
$("[name='leaflet-base-layers']").change( function () {
alert('Layers selected: ' + $(this).parent().text());
ExampleVariable = $(this).parent().text();
});
答案 2 :(得分: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']" );
答案 3 :(得分:0)
最简单的方法是:
$("[name='leaflet-base-layers']").change(function() {
leafletText = $(this).parent().text());
});
请注意,如果您在该分配中使用 var 关键字,那么您将在以后的比较中遇到范围问题,因为该变量将无法在该特定函数之外访问。通过省略 var 关键字,您将var放在全局上下文中,这是您应该尽可能避免的。
我强烈建议学习变量范围,因为这是一个需要掌握的重要概念。