2015-12-27 13 views
17

ボタンをクリックするとsectiondivに追加しようとしています。Jquery:「クリックするだけでdivを一度だけ追加」

最初のクリックでのみsectionを追加したい場合は、divをクリックするたびに、以下で使用するコードにsectionが追加されます。

どうすればよいですか?

$("#nextractorapply").click(function() { 
    $("#main").append('<section id="nextractor" class="five"> </section>'); 
}); 
+0

ボタンだけがこれだけの場合は、ボタンを無効にしてユーザーがクリックし続けないようにすることを検討しましたか? – Ellesedil

答えて

25

あなたはそれがあるかどうかを決定するために、条件を使用して、一度だけ

$("#nextractorapply").one('click', function() { 
    // executes only once 

    $("#main").append('<section id="nextractor" class="five"> </section>'); 
}); 

$("#nextractorapply").on('click', function() { 
    // executes every time 

    // do other stuff 
}); 
+0

問題は、ボタンをクリックするたびに実行する必要のあるクリック機能内のイベントがいくつかあることです。ボタンをクリックするだけでappendが一度発生し、他のイベントは正常に実行されます。 –

+1

それから2つのイベントハンドラを使用して編集します – adeneo

+0

@adenoそれほどありがとうございます。私は何らかの形で動作する同じイベントハンドラで '$("#nextractor ")remove()を使用しましたが、複数の追加があると仮定すると、コード行数が増加します。あなたの方法はずっと簡単で効果的です:) –

7

を発射one()を、使用することができます。

$("#nextractorapply").click(function() { 
    if($('#nextractor').length < 0){ 
     $("#main").append('<section id="nextractor" class="five"> </section>'); 
    } 
}); 
5

何らかの種類の条件を使用して、その複数回の追加を防ぐことができます。

var counter=0; 
$("#nextractorapply").click(function() { 
    if(counter<=0){ 
     $("#main").append('<section id="nextractor" class="five"> </section>'); 
     counter++; 
    } 

    //YOUR OTHER STUFF THAT YOU NEED TO EXECUTE ON EVERY CLICK 
}); 
+0

作品は完璧です。 – jane

3

あなたはHTMLを追加し、要素はデフォルトのクラスを持っている場合は、チェックすることができ.unbind()

$("#nextractorapply").unbind().click(function() { 
    $("#main").append('<section id="nextractor" class="five"> </section>'); 
}); 
0

を使用することができます。 たとえば、class = "first"のようなhtmlコードにクラスを追加して、そのクラスを最初にクリックした後で削除できます。このような

コードの何か:

var element = $("#nextractorapply"); 
    if(element.hasClass("first")){ 
      $("#main").append('<section id="nextractor" class="five"> </section>'); 
      element.removeClass("first"); 
    } 

そして最初のクリック後、「最初の」クラスは、あなたのHTMLから削除されるとjQueryはそれ以上のhtmlを追加しません。

関連する問題