所有,我有以下 jQuery 代码:
jQuery("#add_timeline_row").on("click", function(event){
if(event.preventDefault){
event.preventDefault();
}else{
event.returnValue = false;
}
var total_rows = jQuery('[name="timeline_num[]"]').length;
alert(total_rows);
total_rows = total_rows + 1;
jQuery.post(site_url + "add_row.php", { total: total_rows },
function(response) {
jQuery('#timeline_table tr:last').after(response);
});
});
如果用户单击按钮,这可以正常工作,并且基本上在我的 DOM 完成加载后添加一行。我添加了 .on 函数,以便 jQuery 识别它,因为 DOM 已经加载。我的问题是它创建了一个选择字段。然后,如果选择了某个选择值,我将使用以下 jQuery 删除一行:
jQuery('.event_selection').on('change' ,function(){
var selected_event = jQuery(this).val();
var fullId = jQuery(this).attr('id');
var event_id = fullId.split('_');
if(selected_event=="delete"){
jQuery("#row"+event_id[1]).remove();
}
});
对于在 DOM 中添加的任何行,这些行都会被删除,但是对于我通过我的第一个 jQuery 片段添加的任何新行,更改不会得到重新识别。为什么这不能按我的预期工作?
编辑: 我为此创建了一个 JS 小提琴。可以在这里找到:http: //jsfiddle.net/Kc5R8/
单击“添加新行”后,它会失去所有功能,并且在更改新下拉框时不会产生警报。
感谢您提前提供任何建议!