我试图在点击按钮上创建一个按钮,如果还点击了这个创建的按钮,则应该有另一个动作。
这是我的代码:
//EDIT FUNCTION
$('.edit').on('click', function(e){
e.preventDefault();
content = $(this).prop('name');
id = $(this).prop('id');
if(!document.getElementById('editnews')) {
jQuery('#edit').append('</br><textarea id="editnews" value="'+id+'"></textarea></br>');//is not shown, needed to stop, damn online lib
jQuery('#edit').append('<button name="'+id+'" class="saveedit btn btn-success btn-mini"><span class="glyphicon glyphicon-pencil"></span> Save</button>');
}
$('#editnews').val(content);
});
// EDIT (SEND) FUNCTION
$('.saveedit').on('click', function(e){
console.log("oke");
e.preventDefault();
$.ajax({
type: 'POST',
url: 'index.php?page=news',
data: {editid:$(this).prop('name'), editcontent:$('#editnews').val()}
}).done(function(response) {
location.reload();
});
});
所以第一个编辑功能正常工作,但第二个编辑功能无法跟踪。 希望你能帮助我。
答案 0 :(得分:0)
您需要使用 event-delegation
才能为动态创建的元素绑定事件
$('#edit').on('click','.saveedit', function(e){
console.log("oke");
e.preventDefault();
$.ajax({
type: 'POST',
url: 'index.php?page=news',
data: {editid:$(this).prop('name'), editcontent:$('#editnews').val()}
}).done(function(response) {
location.reload();
});
});
答案 1 :(得分:0)
它无效,因为事件附加到脚本执行时DOM中可用的.saveedit
。任何动态创建的.saveedit
都不会附加此事件。
您需要做的是在document
上附加点击事件,即只要点击.saveedit
内存在document
时处理它:
$(document).on('click', '.saveedit', function(e){
console.log("oke");
e.preventDefault();
$.ajax({
type: 'POST',
url: 'index.php?page=news',
data: {editid:$(this).prop('name'), editcontent:$('#editnews').val()}
}).done(function(response) {
location.reload();
});
});