Goal
I ve got a web page with a table of items. Each item has a delete button beside it. When that button is clicked, I want to
- Ask the user to confirm
- Delete the corresponding item from the database
- Remove that item s row from the list
Current solution
Right now, I m doing something like this:
$( 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();
});
}
}
This solution works because each button.delete
can determine which row and item it belongs to, and act accordingly.
Desired solution
Instead of the clunky "OK or Cancel" alert box, I d like to use a jQuery UI dialog box. But I m not sure how to let the dialog know which row and item it should handle on any given click.
Here s how you set it up:
1) Define a dialog box 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) Set up the dialog box behavior
$( #cofirmdeleteitem ).dialog({
//other options - not relevant here
buttons: {
"Nevermind": function() {
//do nothing
},
"Alright! Woo!": function(){
//do something
}
}
});
3) Set the click event that will open the dialog
$( button.delete ).click(function(){
$( #confirmdeleteitem ).dialog( open );
});
In this last step, I d like to be able to pass some information to the dialog - which delete button was clicked, for example. But I don t see a way to do that.
I could insert a hidden dialog div.dialog
into each item row up front, or insert one into a particular row after its button is clicked. Then the $(this).parent()
references would grab the correct row...
Is there an easier way to do this?