Цель
У меня есть веб-страница с таблицей предметов. Каждый элемент имеет кнопку удаления рядом с ним. Когда эта кнопка нажата, я хочу
- Попросить пользователя подтвердить
- Удалить соответствующий элемент из базы данных
- Удалить строку этого элемента из списка
Текущее решение
Прямо сейчас я делаю что-то вроде этого:
$('button.delete').click(function(){
thisRow = $(this).parent();
itemID = $(this).parent().attr('id');
if (confirm('Are you sure?')){
$.post('/manage_items.php', {"action":"delete", "itemid":itemID}, function(){
thisRow.hide("slow").remove();
});
}
}
Это решение работает, потому что каждый button.delete
может определить, к какой строке и элементу он принадлежит, и действовать соответственно.
Желаемое решение
Вместо неуклюжего окна «ОК или Отмена» я бы хотел использовать диалоговое окно jQuery UI. Но я не уверен, как сообщить диалогу, какую строку и элемент он должен обрабатывать в любой данный клик.
Вот как это настроить:
1) Определить диалоговое окно div
<div class="dialogbox" id="confirmdeleteitem" title="Really DELETE this item?">
<p>Gee golly, are you s-s-s-sure you want to do that?!</p>
</div>
2) Настройка поведения диалогового окна
$('#cofirmdeleteitem').dialog({
//other options - not relevant here
buttons: {
"Nevermind": function() {
//do nothing
},
"Alright! Woo!": function(){
//do something
}
}
});
3) Установите событие нажатия, которое откроет диалоговое окно
$('button.delete').click(function(){
$('#confirmdeleteitem').dialog('open');
});
На этом последнем шаге я хотел бы иметь возможность передавать некоторую информацию в диалоговое окно - например, какая кнопка удаления была нажата. Но я не вижу способа сделать это.
Я мог бы вставить скрытый диалог div.dialog
в каждую строку элемента впереди или вставить один в определенную строку после нажатия на кнопку. Тогда ссылки $(this).parent()
будут содержать правильную строку ...
Есть ли более простой способ сделать это?