javascript - 单击时检索 javascript 对象

标签 javascript jquery html

示例

假设我有一个 JavaScript 中的学校对象数组...

schools =

[
    {name: "School A", phone: "Phone A", location: "Location A"},
    {name: "School B", phone: "Phone B", location: "Location B"},
    {name: "School C", phone: "Phone C", location: "Location C"},
    ...
]

...我想在段落标签中显示学校名称...

<p data-name="School A">School A</p>
<p data-name="School B">School B</p>
<p data-name="School C">School C</p>

...当我单击给定的学校段落时,我想在单独的 Pane 中显示附加信息。例如,当我点击 School A...

<div id="separate-pane">
    <p>Phone A</p>
    <p>Address A</p>
</div>

为此,我需要检索关联的对象,创建附加信息段落标签,并将它们附加到单独的 Pane 中。当单击给定的学校名称段落时,如何有效地引用正确的 javascript 对象?

想法/想法

  1. 使用innerHTML

    • 在点击段落时,从innerHTML 中提取学校名称
    • 迭代 javascript 数组,当 obj.name == innerHTML 时,我们找到了匹配项
  2. 使用数据名称属性

    • 与上面相同,但 obj.name == data-name

这两种方法都应该可行,但是有没有更好的方法可以做到这一点,而不必遍历 javascript 数组来找到正确的对象? 另外,我想要完成的这个过程叫什么?

最佳答案

扩展 Nicolas 的答案,当您从 schools 数组创建 HTML 时,您可以将数组索引放入数据属性中:

$.each(schools, function(i, school) {
    $("#links").append($("<p>", {
        "class": "link",
        text: school.name,
        data: { index: i }
    });
});

$(".link").click(function() {
    var school = schools[$(this).data("index");
    // display school information in #separate-pane
});

关于javascript - 单击时检索 javascript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42212033/

相关文章:

javascript - 用于可拖动页面元素的 css 框架和用于服务器端位置保存的回调

html - 带编号的 CSS 自定义列表样式类型

javascript - 如何在 angularJS 指令中使用 jQuery 插件(语义用户界面)?

javascript - 添加 AJAX 错误 : & success: breaks script

jquery - 更改选择标签标题的颜色

javascript - 在可点击链接下方显示 div

javascript - 从 JavaScript 在 div 中写入文本?

javascript - 如何并行遍历目录树?

javascript - 在谷歌地图中显示 parse.com 的所有地理点

javascript - 如何在vuejs中获取选择选项名称属性