javascript - 在 JQuery 中将元素保存为变量

标签 javascript jquery d3.js

我对 Javascript 和 JQuery 相当陌生,但我对我认为简单的事情有疑问。我正在制作一个由单个 html 页面、css 样式表和 Javascript 文件组成的网站,该文件从某处检索数据并使用 d3.js 绘制网络。我的 html 中有一个 SVG 元素,我需要从 Javascript 访问它,以便更改其属性并在其中绘制。我最初是在 JQuery 中创建 SVG 元素,并将返回值保存为稍后可以使用的变量。然而,这有点难看,因为每次我想绘制新网络时都必须删除并重新添加 SVG。

现在我已将 SVG 元素添加到 html 中,并使布局能够与窗口大小调整完美配合。但是,我似乎无法从 JQuery 轻松访问它。我尝试过这样的事情:

var svg = document.getElementById("svg");
svg.attr("viewBox", "0 0 " + w + " " + h)
            .attr("preserveAspectRatio", "XMidYMid")
            .attr("width", w)
            .attr("height", h);

但是,在 svg.attr(...) 处,我收到错误“TypeError: 'undefined' is not a function (evaluating 'svg.attr("viewBox", "0 0 "+ w + ""+ h)')"。

我还尝试在使用 svg 变量的每个地方使用 $("#svg") 。但是,这给了我错误“TypeError:‘undefined’不是一个函数(评估‘$("#svg").append("svg:defs").selectAll("marker")')"。奇怪的是,在它之前调用的函数,

$("#svg").attr("viewBox", "0 0 " + w + " " + h)
        .attr("preserveAspectRatio", "XMidYMid")
        .attr("width", w)
        .attr("height", h);

...运行得很好。

我不确定我是否将 d3 语法与 JQuery 和 Javascript 语法混淆了,但在我看来,这就像在 Javascript 变量中保存 html 元素的简单问题。这是正常的事情吗?如果是这样,正确的语法是什么?如果没有,我应该做什么?

最佳答案

那是因为 attr()jQuery method ,并且您第一次并没有在 jQuery 对象上调用它。

关于javascript - 在 JQuery 中将元素保存为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16994349/

相关文章:

javascript - asp.net - 从弹出窗口显示弹出窗口

javascript - 在 Mustache.js 中使用逻辑

javascript - 需要帮助将函数的输出作为输入表单的值

javascript - iFrame overflow-x BUG 在 Chrome、IE、Opera、Safari 但在 Firefox 上没有

javascript - 如何在D3中的可缩放冰柱布局中获取文本标签的旋转?

javascript - 为什么这个 D3 闭包没有返回正确的属性

javascript - Three.js透明背景根本不起作用

javascript - "Different"视差滚动效果

javascript - 从单击它的 html 表的行中预填充表单字段。(所有这一切都应该发生在 jsp 上)

javascript - 如何展开d3.js中唯一的一段圆弧?