我正在尝试将html数据动态地插入到动态创建的列表中,但是当我尝试为动态创建的按钮附加onclick事件时,则不会触发该事件。解决方案将不胜感激。
JavaScript代码:
document.addEventListener('DOMContentLoaded', function () { document.getElementById('btnSubmit').addEventListener('click', function () { var name = document.getElementById('txtName').value; var mobile = document.getElementById('txtMobile').value; var html = '<ul>'; for (i = 0; i < 5; i++) { html = html + '<li>' + name + i + '</li>'; } html = html + '</ul>'; html = html + '<input type="button" value="prepend" id="btnPrepend" />'; document.getElementsByTagName('form')[0].insertAdjacentHTML('afterend', html); }); document.getElementById('btnPrepend').addEventListener('click', function () { var html = '<li>Prepending data</li>'; document.getElementsByTagName('ul')[0].insertAdjacentHTML('afterbegin', html); });
});
HTML代码:
<form> <div class="control"> <label>Name</label> <input id="txtName" name="txtName" type="text" /> </div> <div class="control"> <label>Mobile</label> <input id="txtMobile" type="text" /> </div> <div class="control"> <input id="btnSubmit" type="button" value="submit" /> </div> </form>
这是由于您的元素是动态创建的。您应该使用事件委托来处理事件。
document.addEventListener('click',function(e){ if(e.target && e.target.id== 'brnPrepend'){ //do something } });
jQuery使它更容易:
$(document).on('click','#btnPrepend',function(){//do something})