JQuery .html () удаляет теги tr / td? - PullRequest
8 голосов
/ 24 сентября 2011

http://jsfiddle.net/WXG7V/

Как вы можете видеть ниже, у меня есть простой div, содержащий строку, которую я хотел бы добавить в конец моей таблицы.Если я сообщу содержимое div на экран с помощью «.html ()», jQuery удаляет все теги td / tr.

<html>
<head>
<title>jQuery Strips Table Tags</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready( function() {

            alert($("#newRow").html());
            $(".tasks > tbody:last").append($("#newRow").html());
});
</script>
</head>
<body>
    <table class="tasks" style="margin-left: 0px;">
            <tr>
                <th>Feeder ID</th>
                <th>From</th>
                <th>To</th>
                <th># Reels</th>
                <th>Reel Length</th>
                <th>Type</th>
                <th>Colour</th>
            </tr>
        </table>
    </div>

<div id="newRow" style="display: none;">
    <tr>
        <td><input type="text" name="feeder_id" id="feeder_id" /></td>
        <td><input type="text" name="from" id="from" /></td>
        <td><input type="text" name="to" id="to" /></td>
        <td><select name="number" id="number">
            <option value=1>1</option>
            <option value=2>2</option>
            <option value=3>3</option>
            <option value=4>4</option>
            <option value=6>6</option>
            <option value=8>8</option>
            <option value=9>9</option>
            <option value=12>12</option>
            <option value=14>14</option>
            <option value=16>16</option>
        </select></td>
        <td><input type="text" name="length" id="length" /></td>
        <td><select name="type" id="type"><option value="CU">Copper</option><option value="AL">Aluminum</option></select></td>
        <td><input type="radio" name="colour" id="black" value="black" />Black
        <input type="radio" name="colour" id="red" value="red" />Red
        <input type="radio" name="colour" id="blue" value="blue" />Blue
        <input type="radio" name="colour" id="white" value="white" />White
        <input type="radio" name="colour" id="green" value="green" />Green
        </td>
    </tr>
</div>

Ответы [ 2 ]

3 голосов
/ 24 сентября 2011

<tr>, <td> являются допустимыми элементами только внутри <table>.Используйте display: table-row и display: table-cell в сочетании с <div> для замены <tr> и <td>.

Пример:

<div class="table">
    <div class="row">
        <div class="cell">
        Foo
        </div>
    </div>
</div>

CSS:

.table{
     display: table;
}
.row {
     display: table-row;
}
.cell {
     display: table-cell;
}
0 голосов
/ 09 июля 2013

Если вы используете это для шаблонов, я бы рекомендовал проверить handlebars.js

Тогда вы можете просто обернуть существующий html в тег <script id="newRow" type="text/x-handlebars-template"> и сохранить оставшуюся разметку в том же формате, с которого вы начали.

...