Jqueryのappend()を使用して大きなテキストブロックを追加しようとしています。
$('#add_contact_btn').click(function(event) {
event.preventDefault();
var large = '<div class="accordian_container"><a href="#" class="accordian_trigger"><h4>Co-Borrower Information</h4></a><hr/><div class="accordian_item" id="accord_item_2"><label> First Name</label><br/><input type="text"/><br/><label>Middle Name</label><br/>
<input type="text"/><br/>
<label>Last Name</label><br/>
<input type="text" /><br/>
<label>Home Number</label><br/>
<input type="text"/><br>
<label>Work Number</label><br/>
<input type="text"/><br>
<label>Cell Number</label><br/>
<input type="text"/><br>
</div>
</div>';
$('#accordion_container').append(large);
});
それは機能していないようで、append()のドキュメントを見た後、私は理由を理解できません-アイデアはありますか?追加しようとしているのは大量のHTMLですか?
改行を削除します。
var large = '<div class="accordian_container"><a href="#" class="accordian_trigger"><h4>Co-Borrower Information</h4></a><hr/><div class="accordian_item" id="accord_item_2"><label> First Name</label><br/><input type="text"/><br/><label>Middle Name</label><br/><input type="text"/><br/><label>Last Name</label><br/><input type="text" /><br/><label>Home Number</label><br/><input type="text"/><br><label>Work Number</label><br/><input type="text"/><br><label>Cell Number</label><br/><input type="text"/><br></div></div>';
$('#accordion_container').append(large);
Javascriptには、複数行の文字列を記述する方法がありません。1行の文字列を開いて、数行下に移動してから閉じることはできません。 (JSで複数行の文字列を実行する方法はいくつかありますが、それらは逆向きです)。
ほとんどの人がこれを行う方法は次のようなものです。
var myString = '<p>Line One</p>' +
'<p>Line Two</p>' +
'<p>Line Three</p>';
注上記の答えは古く、もはや完全に真実ではありません。 ES6がより一般的になり、ES6から移行する人が増えるにつれて、複数行の文字列として使用できるテンプレートリテラルを使用できるようになります。
var myString = `<p>Line One</p>
<p>Line Two</p>
<p>Line Three</p>`;
非表示のHTMLでテンプレートを作成し、そのコンテンツのHTMLを追加する必要があります。例えば:
<div class="hide" id="template">
<b>Some HTML</b>
</div>
jQuery:
$("#container").append($("#template").html());
JavaScript文字列にHTMLを入れるのは読みにくく、検索が難しく、エラーが発生しやすく、IDEはHTMLを適切にフォーマットするのに苦労します。
この目的のために作成されたtemplate
タグを確認してください。 https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template
template
タグには、他の場所で無効なHTMLを含めることさえ許可されています。 td
の外側のtable
タグ。
長い文字列を複数の行に配置する場合は、文字列の配列を使用してそれらを結合する方が効率的であると理解しています。
var bigString = [
'some long text here',
'more long text here',
'...'
];
$('#accordion_container').append(bigString.join(''));
各行の終わりにバックスラッシュを使用できます。
http://davidwalsh.name/multiline-javascript-strings
var multiStr = "This is the first line \
This is the second line \
This is more...";
別の選択肢は、テンプレートリテラルとback-ticks:
var large = `some long text here
some long text here
some long text here`;
これはかなり新しい構文であり、IEではサポートされていません。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
Javascriptには、複数の行/ HTMLセクションを単一行に拡張するオプションがあり、HTML行の各行にbackslash()を追加して、その継続行を識別します。
Note:-行を追加する際に考慮すべきことは、一重引用符と二重引用符のみです。一重引用符で開始する場合は、内部文字列で二重引用符を使用するか、その逆を使用します。二重引用符を使用しないと、行が切れて適切な結果が得られません。
$(element).append('<div class="content"><div class="left"></div><div class="right"></div></div>');
Javascript構文
var str = ' <div class="content"> \
<div class="left"> \
</div> \
<div class="right"> \
</div> \
</div> ';
document.getElementsByName(str).html(str);
//or
document.getElementsById(str).html(str);
JQuery構文
$(element).append(' \
<div class="content"> \
<div class="left"> \
</div> \
<div class="right"> \
</div> \
</div> \
');
またはjqueryを介した3番目のリンクで言及されているように、これにhtmlテンプレートを使用できます
$("#div").load("/html_template.html");
また、jQueryでdivのクローンを作成してから、クローンを追加することもできます。
var accordionClone = $('.accordion_container').clone();
$('#accordion_container').append(accordionClone);
このように追加するだけで$(#element).append(large_html
)、large_htmlに特殊文字( ``)を付けて、後でありがとう。
デフォルトでは、ラップを含むHTMLコードを_append/prepend
_とともに使用することはできません。_'or"
_を直接使用します。ただし、現在これを行うには次の方法があります。
「+」を使用してHTMLコードを結合します。
「\」を使用してエスケープします。
「 `」(バックティック、 グレーブアクセント )を使用します。追加の操作は不要です。このメソッドは、ES2015/ES6( テンプレートリテラル )からサポートされています。
必要な同じHTMLコードを含む隠しtag
を追加します。 _<p id="foo" style="display:none;">
_、次にuse.append($('#foo').html());
。
上記の_first three methods
_にいくつかの使用シナリオを投稿します(Chrome
ブラウザーのコンソールで実行します):
それらの違いをはっきりと見ることができます。
改行が問題である場合は、innerHTMLを使用するだけで、IE5以降のすべてのブラウザーで機能します。
$('#accordion_container')[0].innerHTML += large;
または、コレクションの場合:
$('.accordion_container').forEach(function () {
this.innerHTML += large;
});