Я использую jquery для добавления нескольких новых элементов формы «addTask» к «ul» на странице при каждом нажатии на ссылку.
$('span a').click(function(e){
e.preventDefault();
$('<li>\
<ul>\
<li class="sTitle"><input type="text" class="taskName"></li>\
<li><input type="button" value="saveTask" class="saveTask button"></li>\
</ul>\
</l1>')
.appendTo('#toDoList');
saveTask();
});
Все эти новые вложенные элементы ul имеют кнопку с тем же классом "saveTask". Затем у меня есть функция, которая позволяет сохранить задачу, нажав на кнопку с классом «saveTask».
// Save New Task Item
function saveTask() {
$('.saveTask').click(function() {
$this = $(this);
var thisParent = $this.parent().parent()
// Get the value
var task = thisParent.find('input.taskName').val();
// Ajax Call
var data = {
sTitle: task,
iTaskListID: 29
};
$.post('http://localhost:8501/toDoLists/index.cfm/Tasks/save',
data, function(data) {
var newTask = '<a>' + task + '</a>'
thisParent.find('li.sTitle').html(newTask);
});
return false;
});
}
Это, по сути, позволяет пользователю вводить некоторый текст в форму ввода, нажимать кнопку Сохранить, а затем задача сохраняется в базе данных с помощью ajax и отображается на странице с помощью jQuery.
Это прекрасно работает, когда на странице есть только один элемент с классом «saveTask», но если у меня более 1 элемента формы с классом «saveTask», он перестает работать правильно, как показывает переменная «var task» как "неопределенное", а не фактическое значение ввода формы.