John, Well figures .. it is my code. .html() certainly does the trick. I wasn't aware that replaceWith removes stuff from the DOM indefinitely.
Ahhhh, thanks for saving me from hours of troubleshooting. I really really appreciate it. - sf On 9/24/07, John Resig <[EMAIL PROTECTED]> wrote: > > Are you meaning to do .html(..) instead of replaceWith? replaceWith > completely removes the element (which means that when it's called the > second time, nothing happens, since the element no longer exists). > > Whereas .html() simply replaces the contents of the element. > > --John > > On 9/24/07, Steve Finkelstein <[EMAIL PROTECTED]> wrote: > > > > This is actually happening in IE7 also. Is it possible that something > > is hosed with my code? I'm more confident it's that than a broken > > replaceWith() but I'd really like to know why it only works once, and > > then I need a page refresh for that "ajax" effect. > > > > - sf > > > > On 9/24/07, Steve Finkelstein <[EMAIL PROTECTED]> wrote: > > > Hi all, > > > > > > So I have a simple script which essentially uses .replaceWith() to > > > replace the containing elements HTML with a success callback. This > > > works fine the first time I invoke a function which calls > > > .replaceWith() in the success call back, but any subsequent calls > > > leaves the DOM unmodified. > > > > > > Here's an example screenshot of what my page looks like upon a random > > > page load. > > > > > > http://catalyst.httpd.org/tmp/1.png > > > > > > Ok so I have 4 notes. Let's delete one: > > > > > > http://catalyst.httpd.org/tmp/2.png > > > > > > Perfect, it's gone: > > > > > > http://catalyst.httpd.org/tmp/3.png > > > > > > Here's where the problem occurs... Let's delete another > > > > > > http://catalyst.httpd.org/tmp/4.png > > > > > > Hmmm, it didn't disappear from the DOM this time: > > > > > > http://catalyst.httpd.org/tmp/5.png > > > > > > The OB/GYN note is still there as rendered by the browser, however the > > > server-side script surely wiped it: > > > > > > mysql> select id,name from ms_notes where id="CN"; > > > Empty set (0.00 sec) > > > > > > Here's what my code looks like to remove the note: > > > > > > function removeNote(id,name) { > > > if(confirm("Are you sure you wish to delete: "+name+"?")) { > > > // ajax code here to remove note. > > > $.ajax({ > > > url: "/dbserver.php", > > > type: "POST", > > > data: "delete="+id, > > > cache: false, > > > success: function(html) { > > > $("#alpha_notes").empty(); > > > $("#alpha_notes").replaceWith(html); > > > } > > > }); > > > } > > > } > > > > > > Very important thing to factor in, is if I do a hard refresh on the > > > page, here are the results... a missing OB/GYN note, which is the way > > > it should be: > > > > > > http://catalyst.httpd.org/tmp/6.png > > > > > > Any idea folks? Would really appreciate any help. Firebug also shows > > > that in its response to my POST call that the notes are not there in > > > its table rendering. My server-side code looks like this: > > > > > > if($_POST['delete']) { > > > global $db_alpha, $link; > > > $alpha_note_set = array(); > > > $db = mysql_select_db($db_alpha, $link); > > > if(!$db) { > > > die("Can't connect to alpha, please contact steve."); > > > } > > > > > > $sql = "DELETE from ms_notes > > > WHERE ID='".$_POST['delete'] > > > ."' LIMIT 1"; > > > $result=''; > > > $result = mysql_query("$sql"); > > > if(!$result) { die("Something is broken... "); } > > > > > > $sql = "SELECT NAME,ID from ms_notes"; > > > $alpha_result_set = @mysql_query("$sql"); > > > $row=''; > > > if(mysql_num_rows($alpha_result_set)==0) { $html = "There are zero > > > notes left to process in Alpha's database"; echo $html; exit; } > > > while($row = @mysql_fetch_array($alpha_result_set, MYSQL_ASSOC)) { > > > $alpha_note_set[] = $row; } > > > $html=''; > > > $html = '<table>'; > > > $html .= '<tr>'; > > > // count here basically just keeps track of a > > > // neatly aligned table > > > $count=0; > > > foreach($alpha_note_set as $note) { > > > $html .= "<td><a href=\"javascript:void(0);\" > > > onclick=\"removeNote('".$note[ID]."','".$note[NAME]."')\">delete</a> $note[NAME]</td>"; > > > $count++; > > > if(($count % 2 == 0)) { > > > $html .= "</tr><tr>"; > > > } > > > } > > > $html .= '</tr></table>'; > > > > > > // send this sucker back to the view. > > > echo $html; > > > } > > > > > > Thanks all. > > > > > > - sf > > > > > >