2016-08-08 4 views
0

Я новичок в Javascript и изучаю новые вещи день за днем. Здесь мне нужно щелкнуть по кнопке, и теперь будет создана новая кнопка. Мне нужно снова щелкнуть эту вновь созданную кнопку и снова создать новую кнопку и так далее. Он должен быть в Pure Javascript.Пожалуйста, помогите мнеСобытие click в динамически создаваемом элементе

document.getElementById("btn").addEventListener("click",function(e) { 
     var btn=document.createElement("BUTTON"); 
     var t=document.createTextNode("Click Me"); 
     //Some code to click dynamically created element 
     btn.appendChild(t); 
     document.body.appendChild(btn); 
+0

поэтому вам нужно добавить событие щелчка. Если вы сделаете его общей функцией, то проще его повторно использовать. Или вы можете узнать о делегировании событий. – epascarello

+0

@epascarello yes Мне нужно щелкнуть динамически созданный elememt. Но я не знаю, как его манипулировать. Как происходит делегирование событий с динамически созданным элементом. Пожалуйста, помогите – Tipu

+1

Так ответили ли какие-либо справки? – epascarello

ответ

0

Создайте функцию, чтобы создать кнопку, которая создает кнопку. Примечание: вы не добавляете текстовый узел к кнопке.

Если вы хотите, чтобы следить за изменениями в DOM и добавлять события к кнопкам в альтернативном способе, проверьте ответы в этой question ...

var body = document.getElementsByTagName('body')[0]; 

(function myButton() { 

    var btn = document.createElement("BUTTON"); 
    var text = document.createTextNode("Click Me"); 

    // append the text to the button 
    btn.appendChild(text); 

    // append the btn to the body tag 
    body.appendChild(btn); 

    // adds the click event to the btn 
    btn.addEventListener("click", myButton); 

})(); 
-1

Просто добавьте EventListener в документ, а затем проверить тег , Вы можете дополнительно expland его также добавление Id или класса к кнопкам и проверить, как хорошо (в случае, если вам необходимо иметь несколько кнопок, которые делает разные вещи)

document.addEventListener('click', function(event) { 
 
    var clickedEl = event.target; 
 
    if(clickedEl.tagName === 'BUTTON') { 
 
    \t \t clickedEl.innerHTML = "clicked!"; 
 
     
 
     var btn=document.createElement("BUTTON"); 
 
     var t=document.createTextNode("Click Me"); 
 
\t \t \t btn.appendChild(t); 
 
     document.body.appendChild(btn); 
 
    } 
 
});
<button>Click Me</button>

+1

downvote? он делает именно то, что вы просили. – user2267175

0

Сделать это общая функция и привязать события кликов к этому методу.

function addButton() { 
 
    var btn = document.createElement("BUTTON"); 
 
    btn.type = "button"; 
 
    var t = document.createTextNode("Click Me"); 
 
    btn.appendChild(t); 
 
    btn.addEventListener("click", addButton); 
 
    document.body.appendChild(btn); 
 
} 
 

 
document.getElementById("btn").addEventListener("click", addButton);
<button type="button" id="btn">Button</button>

Или событие делегация

function addButton() { 
 
    var btn = document.createElement("BUTTON"); 
 
    btn.type = "button"; 
 
    var t = document.createTextNode("Click Me"); 
 
    btn.appendChild(t); 
 
    document.body.appendChild(btn); 
 
} 
 

 
document.body.addEventListener("click", function(e) { 
 
    if (e.target.tagName==="BUTTON") { //I personally would use class or data attribute instead of tagName 
 
     addButton(); 
 
    } 
 
});
<button type="button" id="btn">Button</button>

+1

И причина нисходящего? Я хотел бы улучшить, чтобы вы были счастливы. ;) – epascarello

+0

+1, но обратите внимание: 'document.body.addEventListener (« click »...' не подходит для производительности, так как он проверяет, равенство ли имени тега элемента равно числу '476' каждый раз на странице щелкнуть, и ему не хватает прописного слова 'e.target.tagName'. – Hydro

0

В этом случае JQuery сделать хорошую работу для вас.

$(function($){ 
    $(document).on('click','button',function(e){ 
    // do your stuff. 
    }) 
}) 

Вот еще один хороший ответ с помощью JQuery:

Event binding on dynamically created elements?

Смежные вопросы