将jQuery存储到变量中

Store jQuery to a variable

本文关键字:变量 存储 jQuery      更新时间:2023-09-26

我使用传单制作一个带有层选择器的地图,并使用jQuery绑定到传单层选择器制作的无线电。我可以使用以下代码查看警报中选择的收音机

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

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

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

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

你的意思是这样的吗?

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;
    }
});
$("[name='leaflet-base-layers']").change( function () {
    alert('Layers selected: ' + $(this).parent().text());
    ExampleVariable = $(this).parent().text();
});

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

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']" );

最简单的方法如下:

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

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

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