【问题标题】:Update global variable from jQuery event从 jQuery 事件更新全局变量
【发布时间】:2019-12-12 09:45:15
【问题描述】:

首先,请注意我是 jQuery 新手,js 经验有限,所以这可能是一个愚蠢的问题,但我没有人可以寻求帮助。

我有一个提供两个年份值的 jQuery 范围滑块。我已经成功创建了一个包含最小和最大年份的变量。 在用户与范围滑块交互后,我不确定如何更新最小/最大年份变量。 我需要将最小/最大年份值作为变量,以用作 map/geojson 查询的过滤器。

我曾尝试将变量声明为等于 ui.value(0) 和 ui.value[0],但这是我所得到的。 (例如:yrmin = ui.value[0];) 我唯一确定的就是我知道的还不够多。任何方向、cmets、建议或相关练习/问题的链接等都会非常有帮助。

var yrmin = ''; 
var yrmax = ''; 
$( function() {
    $( "#slider-range" ).slider({
                range: true,
                min: 1900,
                max: 2020,
                values: [ 1945, 1995 ],
                slide: function( event, ui ) {
                  $( "#amount" ).val( " " + ui.values[ 0 ] + " - " + ui.values[ 1 ] );
                }
    });
    $( "#amount" ).val( " " + $( "#slider-range" ).slider( "values", 0 ) +
    " - " + $( "#slider-range" ).slider( "values", 1 ) );
    yrmin = $("#slider-range").slider("values", 0);
    yrmax = $("#slider-range").slider("values", 1);
}); 

当我使用yrmin = ui.value(0); 时,控制台会记录一个 ui not defined 错误..

【问题讨论】:

  • 尝试使用虚拟数据插入您的 jquery 事件函数。因此您可以检查问题可能不在变量集中的确切位置。但是您的滑块数据有问题
  • 应尽可能避免使用全局变量。一个更好的主意是当您需要在地图中使用它们时从范围滑块中读取值。
  • ui.value(0) 在需要 ui.values[0] 时将 value(注意缺少 s)作为函数调用
  • 为什么要关心变量呢?只需在需要数据时访问滑块的值。编码更少,您一定会在需要时获得最新的值。
  • 感谢您提供如此及时和宝贵的意见。我最初认为这将是最好的方法,因为根据需要检索值与检索由滑块值设置的变量相同。

标签: javascript jquery arrays variables jquery-ui


【解决方案1】:

您可以使用 (window),但我建议您尽可能避免使用全局方法

窗口范围

window.yrmin = $("#slider-range").slider("values", 0);
window.yrmax = $("#slider-range").slider("values", 1);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 2019-06-09
    相关资源
    最近更新 更多