2015-12-27 96 views
17

我試圖在點擊一個按鈕後追加sectiondivJquery:只需點擊一次就追加div一次

我想僅在第一次點擊時附加section,下面我使用的代碼在每次單擊div時附加section

我應該怎麼辦?

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

如果這是該按鈕的唯一功能,您是否考慮禁用該按鈕以防止用戶繼續點擊它? – Ellesedil

回答

25

你可以使用one(),只觸發一次

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

問題是我將點擊功能內的一些事件,每次點擊按鈕時都必須執行。一旦按鈕被點擊,我只想要附加發生一次,其他事件正常執行。 –

+1

然後只使用兩個事件處理程序,我將編輯 – adeneo

+0

@adeno非常感謝你。我在同一個事件處理函數中使用了'$(「#nextractor」)。remove()',但是假設我有多個附加操作,代碼的行數會增加。你的方法要簡單得多:) –

7

使用條件,以確定是否它的存在。

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

你可以使用.unbind()

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

您可以檢查是否該元素有一個默認的類,添加HTML。 例如,您可以將一個類添加到html代碼中,如:class =「first」,並在第一次單擊後移除該類。

A碼是這樣的:

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

然後第一次點擊後,「第一」類將被從你的HTML刪除和jQuery不會追加任何進一步的HTML。