javascript - JQuery 创建 HTML 无法正常工作

标签 javascript jquery html

我正在尝试使用 JQuery 创建 HTML。我有一个 JQuery 脚本,它创建一个 HTML 表:

$('<table>').attr('cellspacing', '5').addClass('blocksTable')
        .append('<tbody><tr><td>Name</td>')
        .append('<td><input type="text" value="" name="textBlockNames" class="textField"/></td></tr>')

        .append('<tr><td>Locale</td>')
        .append('<td><input type="text" value="" name="textBlockLocales" class="textField"/></td></tr>')

        .append('<tr><td>Content</td>')
        .append('<td><input type="text" value="" name="textBlockContents" class="textField"/></td></tr></tbody>')

        .append('</table>')
        .appendTo($("#idParentBlocksTable"));

但是表格是这样生成的:

<table class="blocksTable" cellspacing="5">
    <tbody>
        <tr>
            <td>Name</td>
        </tr>
        <tr>
            <td>Locale</td>
        </tr>
        <tr>
            <td>Content</td>
        </tr>
    </tbody>
    <td>
        <input class="textField" type="text" name="textBlockNames" value="">
    </td>
    <td>
        <input class="textField" type="text" name="textBlockLocales" value="">
    </td>
    <td>
        <input class="textField" type="text" name="textBlockContents" value="">
    </td>
</table>

虽然它应该像这样生成:

<table class="blocksTable" cellspacing="5">
    <tbody>
        <tr>
            <td> Name </td>
            <td>
                <input class="textField" type="text" name="textBlockNames" value="">
            </td>
        </tr>
        <tr>
            <td> Locale </td>
            <td>
                <input class="textField" type="text" name="textBlockLocales" value="">
            </td>
        </tr>
        <tr>
            <td> Content </td>
            <td>
                <input class="textField" type="text" name="textBlockContents" value="">
            </td>
        </tr>
    </tbody>
</table>

我在这里做错了什么?我不知道如何更清楚地解释这个问题,所以我在这里输入任何内容,因为系统不允许我提交问题。

最佳答案

当你打电话时

.append('<tbody><tr><td>Name</td>')

jQuery 不会更改页面的 HTML 源代码,而是添加一个(或多个)DOM 节点。所以HTML会自动固定(这里行和单元格是关闭的)

您应该做的是构建一些 HTML 字符串并附加它:

var html = '<tbody><tr><td>Name</td>'
html += '<td><input type="text" value="" name="tex"'...
...
html += '</tbody>';
$('<table>').attr('cellspacing', '5').addClass('blocksTable').append(html);

请注意,向 DOM 追加元素的成本很高。您应该更喜欢构建一个大的 HTML 字符串并将其附加一次,而不是附加许多小元素。

关于javascript - JQuery 创建 HTML 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13604598/

相关文章:

html - 不允许嵌套函数

javascript - Protractor 单击包裹的 p-dropdown - 选择值 - 元素在点 (x, y) 处不可单击其他元素将收到单击

javascript - 如何在渲染 Marionette View 之前加载远程数据

javascript - 动态调用对象属性

javascript - 数据表和 sScrollY、自动调整大小

javascript - 使用 jquerymobile 1.4 删除按钮并将属性添加到按钮

javascript - 将变量数组大写

html - 使用多个 rowspan 时行高不正确

php - 无法获取 fgetcsv 文件以与 MySQL 数据库一起使用

javascript - 在 div 中禁用 html