2017-08-09 5 views
0

私のコードにコンテンツを追加しようとしています。ボタンを押すと、jQueryが再び実行され、もう一度追加されます。だから私の質問は、コードが1回だけ実行されることを確認する方法はありますか?または一度だけ追加する方法がある場合は?Appendがコンテンツを複製しています

$(document).ready(function() { 
    var uspar = '<div id="usparDiv"><img src="https://example.com"><ul><li>list 1</li><li>list 2</li><li>list 3</li></ul></div>'; 
    $('.extend-guarantee').append(uspar); 
}); 



<form class="extend-guarantee"> 
    <span class="checkbox"> 
    <input type="checkbox"> 
    <span class="opt-name">Testing checkbox</span> 
    <span class="icon-click"></span> 
    </span> 

+1

HTMLとボタンクリックハンドラも参照すると便利です –

+0

コンテンツがクリックイベントに追加されているという兆候はありませんか?このコードは、最初(一度だけ)実行されますか?そうでなければ、より多くのコンテキストが必要です – Endless

+0

JQueryはページのロード時に1回だけ実行されます。おそらく、あなたはこのスクリプトをあなたのHTMLやsmthの中に2回組み込んだでしょう。 – euvl

答えて

0

私が正しくあなたの質問を理解していた場合、あなたはこのような何かを試すことができます。

以下のコードでは、appendToDomという関数を作成します。ボタンをクリックしてusparDivのIDを持つdivとそのすべての内容(関数で定義されているもの)をDOMに追加すると、この関数が呼び出されます(この場合、コンテンツはappendToDom )。

appendToDom関数は、idがusparDivのdivが存在するかどうかをチェックすることで、コンテンツが1回だけ追加されることを確認することもできます。実行されている場合は、実行を返して終了します。そうでなければ、divにDOMを追加します。

https://jsfiddle.net/eulloa/2a3ee3te/

$(document).ready(function() { 
    $('button').on('click', appendToDom) 
}); 

function appendToDom() { 
    if ($('#usparDiv').length) 
    return; 

    var uspar = '<div id="usparDiv"><img src="https://example.com"><ul><li>list 1</li><li>list 2</li><li>list 3</li></ul></div>'; 
    $('main').append(uspar); 
} 

DOMは(document.readyを)行く準備ができているとき、それは定義されているため現在のjQueryのコードは一度だけこれを実行します。このように、追加ロジックは、DOMの準備ができたときだけでなく、ボタンがクリックされたときにも機能します。

関連する問題