将jQuery存储到变量中

时间:2013-07-30 18:20:06

标签: javascript jquery variables leaflet

我正在使用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 个答案:

答案 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放在全局上下文中,这是您应该尽可能避免的。

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