jQueryでタグが自動補完される

append()やprepend()等でタグを挿入する場合、append(‘<div>’)のような開始タグだけの指定でも、自動で閉じタグを補完してくれるみたいです。
割と一般的なのかもですが、個人的に知らなかったのでメモしておきます。

サンプルコード

for文の中でliを毎回挿入してみます。

HTML

1
<ul id="sample"></ul>

JavaScript

1
2
3
4
5
$(function() {
    for (var i = 0; i < 5; i++) {
        $('#sample').append('<li>' + i);
    };
});

自動補完のデモページ1
 

挿入後は以下のようになります。

1
2
3
4
5
6
7
<ul id="sample">
    <li>0</li>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
</ul>

次にfor文の中で挿入する要素を作成して、for文を出た後に挿入をしてみます。

JavaScript

1
2
3
4
5
6
7
$(function() {
    var insert = '';
    for (var i = 0; i < 5; i++) {
        insert += '<li>' + i;
    };
    $('#sample').append(insert);
});

自動補完のデモページ2
 

for文を出た後のinsertの中身はこのようになっています。

1
<li>0<li>1<li>2<li>3<li>4

これをappendで挿入すると以下のようになります。

1
2
3
4
5
6
7
<ul id="sample">
    <li>0</li>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
</ul>

 

サンプルコード2

意図しない形の自動補完もあり得るのかいくつか試してみました。

HTML

1
<div id="sample"></div>

JavaScript

1
2
3
4
5
6
7
8
9
$(function() {
    for (var i = 0; i < 5; i++) {
        var insert = '';
        insert += '<div>';
        insert += '<p>' + i + '</p>';
        insert += '</div>';
        $('#sample').append(insert);
    };
});

for文で挿入する要素を作成して、その後appendで挿入する形です。
これの閉じタグを入れ忘れた想定でやってみます。
自動補完のデモページ3
 

上記の6行目を入れ忘れた場合。

JavaScript

1
2
3
4
5
6
7
8
9
$(function() {
    for (var i = 0; i < 5; i++) {
        var insert = '';
        insert += '<div>';
        insert += '<p>' + i + '</p>';
//      insert += '</div>'; // 入れ忘れた場合
        $('#sample').append(insert);
    };
});

自動補完のデモページ4
 

この場合は挿入後は意図したとおりになりました。

1
2
3
4
5
6
7
<div id="sample">
    <div><p>0</p></div>
    <div><p>1</p></div>
    <div><p>2</p></div>
    <div><p>3</p></div>
    <div><p>4</p></div>
</div>

先ほどと同じようなコードですが、for文の中で挿入するのではなく、for文の中で挿入する要素を作成してから挿入してみます。

JavaScript

1
2
3
4
5
6
7
8
9
$(function() {
    var insert = '';
    for (var i = 0; i < 5; i++) {
        insert += '<div>';
        insert += '<p>' + i + '</p>';
//      insert += '</div>'; // 入れ忘れた場合
    };
    $('#sample').append(insert);
});

自動補完のデモページ5
 

こちらの場合、挿入後はdivが入れ子になり、意図したとおりになりませんでした。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<div id="sample">
    <div>
        <p>0</p>
        <div>
            <p>1</p>
            <div>
                <p>2</p>
                <div>
                    <p>3</p>
                    <div>
                        <p>4</p>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

閉じタグのつけ忘れなどは割とあり得ると思うので、こういった場合は注意が必要かもしれません。
 

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2025年4月
 12345
6789101112
13141516171819
20212223242526
27282930