简体   繁体   中英

Jquery: Append div only once 'on click'

I am trying to append a section to a div on the click of a button.

I want the section to be appended only on the first click, the code that I use below appends a section every time I click the div .

How should I go about this?

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

You could use one() , which fires only once

$("#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
});

Use a conditional to determine if it's there.

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

You can use some kind of a condition that prevents its appending multiple times.

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
});

You could use .unbind()

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

You could set a variable and fire event if variable is set as true or false.

var _clicked = false;

$('.element').click(function(){
  if(!_clicked){
   _clicked = true;
   console.log('event fired');
  }
})

You could check if the element has a default class, append html. For example you could add a class to html code like : class="first", and after first click remove that class.

A code something like this :

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

And then after first click, the "first" class will be removed from your html and Jquery will not append any further html.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM