javascript - 使用 jquery/d3 动态重用模板

标签 javascript jquery html templates d3.js

因此,我将 d3 与 jquery 一起使用来加载将充当弹出窗口的模板。我拥有的是多个相同的按钮,每个按钮都会触发此功能并显示带有指定文本的弹出窗口。

function(d, i){
  var x = d3.select("body")
    .append("div")
    .attr("id", "x" + i);

  $("#x" + i).load("template.html", function(){ $("#textBox").text(data)});
}

使用模板:

<html>
  <div id="textBox"></div>
</html>

d3.select.append 正在按预期工作。每次单击不同的按钮时,都会创建一个具有相关 id 的新 div。然而,每次调用 .load() 时,文本都会加载到创建的第一个 div 中,而不是加载到具有指定 id 的 div 中。我相信我误解了 .load() 的工作原理,.load 的回调函数是否正在寻找“#textBox”的第一个实例?如果是这样,是否可以在模板中定义动态 ID?

第一次点击:

<div id = "x1">
  <div id="textBox">data1</div>
</div>

第二次点击:

<div id = "x1">
  <div id="textBox">data2</div>
</div>
<div id = "x2">
  <div id="textBox"></div>
</div>

感谢您的宝贵时间

最佳答案

您误解了 HTML 的工作原理,而不是 loadid 属性代表标识符,其中 has to be unique in a document 。所以答案既不是关于 jQuery,也不是关于 D3。

您需要将 textBoxid 属性值更改为 class 属性值。回调中的选择器将更改为 '#x' + i + ' .textBox'

关于javascript - 使用 jquery/d3 动态重用模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27159678/

相关文章:

javascript - 自动完成仅显示来自特定国家或邮政编码的结果

javascript - javascript 切换显示/隐藏按钮适用于小规模,但不适用于我的较大 HTML 代码

javascript - 解释 "you can have functions that change other functions"

javascript - node.js - 访问系统命令的退出代码和标准错误

jquery - 单击 jQuery 在类之间切换

jquery - 启用禁用的按键?

javascript - 使用 JQuery/CSS 动画增加 div 的大小

javascript - 如何制作动画以在框架中绕圈移动图像?

javascript - 对象不支持此属性或方法

html - 为什么这张 table 上有边框?