【问题标题】:Accessing Jquery variable for d3访问 d3 的 Jquery 变量
【发布时间】:2014-02-25 19:18:11
【问题描述】:

我想从 jquery 函数中获取一个变量以插入 d3,但我无法访问它。这就是我所拥有的,我遇到问题的变量是 yearSelected。我只是想捕获 yearSelected 现在写入控制台。

var yearSelected = "";
    $(function () {      
        $("#slider").slider({
            value: 100,
            min: 2000,
            max: 2013,
            step: 1,
            slide: function (event, ui) {
                $("#year").val(ui.value);
                yearSelected = ui.value;
            }
        });
        $("#year").val($("#slider").slider("value"));

        return yearSelected;
    });

    console.log(yearSelected);

【问题讨论】:

  • 你没有解释你想如何将它与 D3 一起使用。
  • 感谢您的解释!我想根据 Jquery 滑块中的年份更新我的 d3 chloropeth 地图。
  • 好吧,您在ui.value 中获得了该值——您需要做的就是调用一个对其进行更新的函数。

标签: javascript jquery d3.js


【解决方案1】:

$(function(){})$.documentReady(function(){}) 调用的简写 - 它注册 DOMContentLoaded 侦听器。

问题:

  1. 监听器不能返回值(这是没有意义的)。
  2. 您的代码是异步的:您尝试在注册监听器后立即访问yearSelected 值,但监听器仅在构造 DOM 时触发! 清楚吗?
    1. 在加载脚本并评估时评估主 JS 代码
    2. 仅在整个 DOM 内容可用后才评估侦听器函数(比评估主脚本晚得多

一种解决方法的简单方法:将您的示例中的逻辑 (console.log) 合并到侦听器函数中(您的滑块被初始化的地方)。

附:这种方法导致了称为'javascript回调地狱'的问题,但这是另一回事......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多