Note that there are some explanatory texts on larger screens.

plurals
  1. POStrange looping problem with jQuery when I try to delete an entry
    primarykey
    data
    text
    <p>I have tried to document this as well as I can in the code.</p> <p>Getting a weird looping thing when I try to delete an item that I've added.</p> <p>Example:</p> <p>I have 3 items that I've added:</p> <ul> <li><p>When I try to delete the very first item in the list...I get the confirm Delete dialog 3 times</p></li> <li><p>Deleting the second item in the list...I get the confirm 2 times.</p></li> <li><p>And yep...you guessed it..that last one gives it to me only once.</p></li> </ul> <p>Thanks in advance.</p> <p>Anyway, here's the commented jQuery code (it's a big one):</p> <pre><code>$(document).ready(function() { //hides the message/error console $("#console").hide(); //this is the add new button functionality $("#save").click(function(){ var ul = $("ul.addul"); var addM = $(".mo").val(); var addY = $(".yr").val(); var addC = $(".ct").val(); var addT = $("textarea#addThoughts").val(); //submit the add $.post("save.php", { month : addM, year : addY, cottage : addC, thoughts : addT }, function(data){ //all good if(data.success) { //returns the item's respective id from db var returnID = data.id; //resets the form after items inserted into db document.getElementById('items').reset(); //this puts the added item into the html $(".added").append(//content in here removed to shorten the example); //not implemented yet $(".edit").click(function(){ $(this).parent().siblings("li.addit").hide(); $(this).parent().siblings("li").children("[name=month], [name=year], [name=cottage], [name=thoughts]").show(); $(this).parent().siblings("li").children(".showDataMonth, .showDataYear, .showDataCottage, .showDataThoughts").hide(); $(this).siblings(".del").hide(); $(this).siblings(".cancel, .save").show(); $(this).hide(); }); //this is functioning properly; this cancels an update $("button.cancel").click(function(){ $(this).parent().siblings("li.addit").show(); $(this).parent().siblings("li").children("[name=month], [name=year], [name=cottage], [name=thoughts]").hide(); $(this).parent().siblings("li").children(".showDataMonth, .showDataYear, .showDataCottage, .showDataThoughts").show(); $(this).siblings(".edit, .del").show(); $(this).siblings(".save").hide(); $(this).hide(); }); //resetting of values to prepare another entry $(".save, .cancel, .month, .year, .cottage, .thoughts").hide(); $(".showDataThoughts").css({ width : "160px;"}); $(".mo, .yr, .ct").val("0"); //shows successful insert of data into db $("#console").html(data.message).css({background: "green", color: "white"}).fadeIn().animate({ opacity : "+=0" }, 2000).fadeOut(); //this is the delete function that I am referring to. //I get the "confirm" dialog just fine. //say I have 3 entries: //if I try to delete the first entry...I get the confirm delete dialog 3 times. //if I try to delete the second entry...I get the confirm delete dialog 2 times. //and the 3rd entry...I only get it once. //I'm stuck in a weird kinda loop. $(".del").click(function(){ var del = this; var thisVal = $(del).val(); $.post("delete.php", { dirID : thisVal }, function(data){ if(confirm("Are you sure you want to DELETE this entry?") == true) { if(data.success) { alert(thisVal); } } return false; }, "json"); }); } else if(data.error) { //item could not be added $("#console").html(data.message).css({background: "red", color: "white"}).fadeIn().animate({ opacity : "+=0" }, 2000).fadeOut(); } }, "json"); return false; }); //end of add button //this populates the select boxes $.getJSON('dates_in_residence.php', function(data){ var htmlMonth = ''; var htmlYear = ''; var htmlCottage = ''; var len = data.length; for (var i = 0; i &lt; 12; i++) {htmlMonth += '&lt;option class="optionMonth" value="' + data[i].month + '"&gt;' + data[i].month + '&lt;/option&gt;'; } $('select#addMonth').append(htmlMonth); for (var i = 12; i &lt; 34; i++) {htmlYear += '&lt;option class="optionYear" value="' + data[i].year + '"&gt;' + data[i].year + '&lt;/option&gt;'; } $('select#addYear').append(htmlYear); for (var i = 35; i &lt; 42; i++) {htmlCottage += '&lt;option class="optionCottage" value="' + data[i].cottage + '"&gt;' + data[i].cottage + '&lt;/option&gt;'; } $('select#addCottage').append(htmlCottage); }); //this adds select menu's value to hidden inputs $("#addMonth").change(function () { var str = ''; $("#addMonth option:selected").each(function () { str += $(this).text() + " "; }); $(".mo").val(str); }).change(); $("#addYear").change(function () { var str = ""; $("#addYear option:selected").each(function () { str += $(this).text() + " "; }); $(".yr").val(str); }).change(); $("#addCottage").change(function () { var str = ""; $("#addCottage option:selected").each(function () { str += $(this).text() + " "; }); $(".ct").val(str); }).change(); }); </code></pre> <p>And the delete.php file:</p> <pre><code>&lt;?php if($_POST) { $data['delID'] = $_POST['dirID']; $query = "DELETE from //tablename WHERE dirID = '{$data['delID']}' LIMIT 1"; $result = $db-&gt;query($query); if($result) { $data['success'] = true; $data['message'] = "This entry was successfully removed."; } echo json_encode($data); } ?&gt; </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload