2012-01-20 62 views
11

我需要動態創建10個按鈕與jquery並將其上的文本設置爲1-10,並添加相同的點擊事件到他們所有人。動態創建按鈕與jquery

我應該使用DOM創建元素還是其他?

回答

17
 

$(document).ready(function() { 
    for(i = 1; i <=10; i++) { 
    $('<button/>', { 
     text: i, //set text 1 to 10 
     id: 'btn_'+i, 
     click: function() { alert('hi'); } 
    }); 
    } 
}); 
 

希望它可以幫助

+0

哦,我喜歡這個。 +1。但是,這假設所有按鈕執行相同的功能。你現在還需要調用一個函數來測試這個id並且調用另一個我認爲的 – griegs

+0

OP應該注意到Sudhir有意留下'$('''因爲他不知道你是否想'$'''

+1

'$('

0

看到這個關於如何使用jQuery What is the most efficient way to create HTML elements using jQuery?還創建元素

,一旦你已經創建的元素,附加你需要使用Live()關鍵字的事件。

$("#btn1").live("click", function(){ 
//Do work 
}); 
+3

'live'是從jQuery 1.7開始不推薦使用,不建議使用自1.4.2開始使用。推薦使用1.7+'代表'或'on',對於1.4.2+代表''代表''。 – mrtsherman

6

試試這個

var $something= $('<input/>').attr({ type: 'button', name:'btn1', value:'am button'}); 

現在把這段一些DIV稱爲變種

$("#var").append($something); 
的課程

,你需要做的是在循環並將迭代的值附加到名稱或ID fie按鈕的LD,創建一個按鈕的動態命名..

希望的概念幫助:)

3

我創造了這個小傢伙。想想各個功能是矯枉過正,但是這是問的問題(我認爲):

https://jsfiddle.net/mmv1219/koqpzrar/1/

HTML:

<button type="button" id="Delta1">Blast Off!</button> 
<div id="insertHere"></div> 

的JavaScript:

$('#Delta1').click(function() { 
    var functions = ['btn1()', 'btn2()', 'btn3()', 'btn4()', 'btn5()', 'btn6()', 'btn7()', 'btn8()', 'btn9()', 'btn10()']; 
    var div = document.getElementById('insertHere'); 
    var ctr = 1; 
    for (var i in functions) { 

     var btn = document.createElement('button'); 
     var txt = document.createTextNode(String(ctr)); 

     btn.appendChild(txt); 
     btn.setAttribute('type', 'button'); 
     btn.setAttribute('onclick', functions[i]); 
     btn.setAttribute('id', 'button' + ctr); 
     div.appendChild(btn); 
     ctr++; 
    } 
}); 

function btn1() {alert('button 1');}  
function btn2() {alert('button 2');}  
function btn3() {alert('button 3');} 
function btn4() {alert('button 4');} 
function btn5() {alert('button 5');} 
function btn6() {alert('button 6');} 
function btn7() {alert('button 7');} 
function btn8() {alert('button 8');} 
function btn9() {alert('button 9');} 
function btn10() {alert('button 10');}