1

このコードを見てください: http://jsfiddle.net/Bkdgr/1/
動作しません。

ただし、次の 2 つの変更のいずれかを行うと、正しく機能しnewItemます。append$()

$('button').on('click', function(e){
    e.preventDefault();
    var newItem = '\
        <li>Hello, \
        World!</li>';
    $('ul').append(newItem);
});


開始<li>タグを文字列定義の最初の行に移動します。

$('button').on('click', function(e){
    e.preventDefault();
    var newItem = '<li>Hello, \
        World!</li>';
    $('ul').append($(newItem));
});


<li>先頭と同じ行 に移動しても機能しません\(ただし、削除せずに\)。
私には、コンストラクターが文字列定義$()の先頭に問題があるようです。\純粋な文字列 ($()ラッパーなし) を渡しappendても問題はないようです。
なぜこのように機能するのですか?先頭のスラッシュには特別な意味があり$()ますか?

4

2 に答える 2

3

jQuery によって解析される html 文字列に$()は、先頭のスペース、改行文字、改行文字、または単なるプレーン テキストを含めることはできません。これは、API に記載されています。

http://api.jquery.com/jQuery/#jQuery2

HTML 文字列の場合は、html タグで開始する必要があります。渡された文字列は css セレクターとして解析できないため、少し厳密ではありません.append().html()

于 2013-04-18T20:53:01.993 に答える