当前位置: 首页 > 知识库问答 >
问题:

jQuery使用来自数据的元素创建div

贺轶
2023-03-14

我有一个html模板和im在页面加载时用jquery post获取数据。我想用foreach创建模板div并且尽可能的基本。我的意思是我想尽可能地把它弄干净。我的数据是一个对象数组。我通过以下方式获取数据:

const emailData = async () => {
var offset = 0;
var limit = 10;
const values = {offset : offset, limit: limit}
  const res = await PostService.getCaseDetails(URL, values);
  res.forEach((obj) => {
    $('.ListLine').append(html(obj.id, obj.date, obj.from, obj.subject))
  }
)

}

我的数据是:

[
{
    "id": 1,
    "projectName": "Project Name 1",
    "date": "03.15.2021",
    "from": "Name 1",
    "subject": "Example folder",
    "lastLegalSituation": "DURUM"
},
{
    "id": 2,
    "projectName": "Project Name 2",
    "date": "03.15.2021",
    "from": "Name 2",
    "subject": "Example folder1",
    "lastLegalSituation": "DURUM"
},
{
    "id": 3,
    "projectName": "Project Name 3",
    "date": "03.15.2021",
    "from": "Name 3",
    "subject": "Example folder2",
    "lastLegalSituation": "DURUM"
}

]

和我的模板:

<div class="ListTitle pl-3">

            <div class="row">
                    <span class="col-lg-2 CheckColon">
                        <div class="ChackRadio">
                            <label>
                                <input type="checkbox">
                                <span class="checkmark"></span>
                            </label>
                        </div>
                    </span>
                <span class="col-lg-2">
                    04.02.2020
                    </span>
                <span class="col-lg-2">
                    First Name - Last Name
                    </span>
                <span class="col-lg-3">
                    Example Folder
                    </span>

                <span class="col-lg-3">
                        + New Mail
                    </span>

            </div>
        </div>
        <div class="Dotted">
            <span></span>
            <span></span>
            <span></span>
        </div>
        <div class="DottedMenu">
            <span onclick="OverlayOpen('OverlayEditIdCard')"><i class="Replay"></i>Yanıtla</span>
            <span onclick="OverlayOpen('OverlayEditIdCard')"><i class="ReplayAll"></i>Tümünü yanıtla</span>
            <span onclick="OverlayOpen('OverlayDeleteIdCard')"><i class="Delete"></i>Sil</span>
        </div>

我想做的是:

  const html = (id, date, from, subject) => {
return (
  "    <div id=" +
  id +
  ' class="ListTitle pl-3">\n' +
  "\n" +
  '                <div class="row">\n' +
  '                        <span class="col-lg-2 CheckColon">\n' +
  '                            <div class="ChackRadio">\n' +
  "                                <label>\n" +
  '                                    <input type="checkbox">\n' +
  '                                    <span class="checkmark"></span>\n' +
  "                                </label>" +
  "                            </div>\n" +
  "                        </span>\n" +
  '                    <span class="col-lg-2">\n' +
  date +
  "                        </span>\n" +
  '                    <span class="col-lg-2">\n' +
  from +
  "                        </span>\n" +
  '                    <span class="col-lg-3">\n' +
  subject +
  "                        </span>\n" +
  "\n" +
  '                    <span class="col-lg-3">\n' +
  "                            + Yeni Mail\n" +
  "                        </span>\n" +
  "\n" +
  "                </div>\n" +
  "            </div>\n" +
  '            <div class="Dotted">\n' +
  "                <span></span>\n" +
  "                <span></span>\n" +
  "                <span></span>\n" +
  "            </div>\n" +
  '            <div class="DottedMenu">\n' +
  '                <span onclick="OverlayOpen(\'OverlayEditIdCard\')"><i class="Replay"></i>Yanıtla</span>\n' +
  '                <span onclick="OverlayOpen(\'OverlayEditIdCard\')"><i class="ReplayAll"></i>Tümünü yanıtla</span>\n' +
  '                <span onclick="OverlayOpen(\'OverlayDeleteIdCard\')"><i class="Delete"></i>Sil</span>\n' +
  "            </div>"
);
};

任何帮助都是感激的。

共有1个答案

诸龙野
2023-03-14

您可以轻松地使用模板文字。

模板文字(模板字符串)

const html = (id, date, from, subject) => {
    return `

    <div id="${id}" class="ListTitle pl-3">
        <div class="row">
            <span class="col-lg-2 CheckColon">
                <div class="ChackRadio">
                    <label>
                        <input type="checkbox">
                        <span class="checkmark"></span>
                    </label>
                </div>
            </span>
            <span class="col-lg-2">${date}</span>
            <span class="col-lg-2">${from}</span>
            <span class="col-lg-3">${subject}</span>
            <span class="col-lg-3">Yeni Mail</span>
        </div>
    </div>

    <div class="Dotted">
        <span></span>
        <span></span>
        <span></span>
    </div>

    <div class="DottedMenu">
        <span onclick="OverlayOpen('OverlayEditIdCard')"><i class="Replay"></i>Yanıtla</span>
        <span onclick="OverlayOpen('OverlayEditIdCard')"><i class="ReplayAll"></i>Tümünü yanıtla</span>
        <span onclick="OverlayOpen('OverlayDeleteIdCard')"><i class="Delete"></i>Sil</span>
    </div>
    `;
}

 类似资料:
  • 问题内容: 如何在 jQuery中 创建元素? 问题答案: 您可以使用(在父级的最后一个位置添加)或(在父级的第一个位置添加): 或者,您可以使用或

  • 问题内容: 我有2种方法可以创建using 。 要么: 要么: 除了可重用性之外,使用第二种方式的缺点是什么? 问题答案: 第一种选择使您更具灵活性: 当然会覆盖内容,而不会覆盖,但是我想这不是您的问题。 在属性名称周围加上引号会使它与较不灵活的浏览器更加兼容。

  • 问题内容: 我正在使用jQuery CSS函数设置某些元素的样式 这可行,但是页面加载后会动态创建部分元素。这应该是 我被创建的事件困住了。有任何想法吗? 问题答案: 创建的元素没有事件(无论如何都无法通用)。你可以 将规则添加到样式表,以便将其自动应用于新创建的元素 创建元素时,链接 css() 方法: 动态创建一个新的样式表:

  • 我知道显示输出的其他方式。但我想知道是否可以直接检索返回数组的元素。

  • 我试图在TypeScript中创建一个格式正确的SVG元素: 但是,在中出现以下错误

  • 利用DOM方法创建元素节点,通常要将document.createElement()、document.createTextNode()、appendChild()配合使用,十分麻烦。 而jQuery使用$就可以直接创建DOM元素 var oNewP = $("<p>使用jQuery创建的内容</p>"); 以上代码等同于javascript var oNewP2 = docume