javascript - 如何立即更新 jquery 中的选择器下拉值?

标签 javascript

我编写了以下代码;

var region = $('#inputGroupSelect01').val()
region = $('#inputGroupSelect01').change(function() {
  $(this).val()
})
console.log(region)

控制台显示k.fn.init(1)。但我希望 $(this).val() 会更新区域变量的值。如何将 $(this).val() 设置为更改事件的区域?

编辑 1

我希望这个region变量位于危险部分。像这样;

var hazardLayer = L.tileLayer.wms("http://localhost:8080/geoserver/tajikistan/wms", {
    layers: `tajikistan:${region}`,
    format: 'image/png',
    transparent: true,
    version: '1.1.0',
    attribution: "country layer"
  });

我希望hazardLayer也在全局范围内。我无法将其放入 change 事件中。

编辑2

hazardLayer 将像这样在点击函数中使用;

$('#load').click(function () {
  hazardLayer.addTo(map);
});

$('#clear').click(function () {
  map.removeLayer(hazardLayer);
})

我有超过 10 个层(例如 hazardLayer)和七个变量(例如 region)。我需要干净的代码,所以我希望两者都在全局范围内。

最佳答案

就像您所说,您可以将区域变量定义在全局上下文中,并通过定义一个基于传递的层返回层的函数来减少代码行/复杂性。


var region
var currentLayer

var region = $('#inputGroupSelect01').val()
region = $('#inputGroupSelect01').change(function () {
    $(this).val()
});

function createLayer(region) {
    return L.tileLayer.wms("http://localhost:8080/geoserver/tajikistan/wms", {
        layers: `tajikistan:${region}`,
        format: 'image/png',
        transparent: true,
        version: '1.1.0',
        attribution: "country layer"
    });
}

$('#load').click(function () {
    currentLayer = createLayer(region)
    currentLayer.addTo(map);
});

$('#clear').click(function () {
    map.removeLayer(currentLayer);
});

关于javascript - 如何立即更新 jquery 中的选择器下拉值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58637124/

相关文章:

javascript - 如果在 php 和 javascript 的帮助下提交为空白,如何更改输入文本颜色?

javascript - 使用 ReactJS 动态表中的列总计

javascript - 如何为 AJAX 自带的元素解除事件绑定(bind)

javascript - 显示 JS ToDo 列表中有多少已完成的任务 VS 有多少任务

javascript - JSON 解析抛出的意外 token 错误

javascript - 如果选中复选框,则获取当前位置

javascript - 按键按字母顺序排序 Object.entries

javascript - 如何通过文本 [protractor] 在 ng-table 中查找特定行

javascript - 使用 jQuery 获取父 <li> 项

javascript - 如何从已显示的 Highcharts 系列中绘制新图表