Что то не так с кодом
$('.delete').click(function(e) { e.preventDefault(); var id = $(this).attr('id'); $('.n_warning').fadeOut(500); $('.n_warning').fadeIn(500); $('.n_warning').html('<p>Are you sure? <button id=\"yes\">YES</button><button id=\"no\">NO</button></p>'); $('#yes').click(function(){ $.ajax({ type: 'POST', url: '/admin/delete', data: { id:id }, success: function(data){ $('#'+id).fadeOut(500); $('#adm-notification').html(data); } }); }); $('#no').click(function(){ $('.n_warning').fadeOut(500); }); }); Код вроде бы работает, все отлично. Но вот сделал один раз (т.е кликнул на .delete потом на #yes, отправил ajax, удалил из базы) после этого больше .delete не кликается, соответвенно .n-warning не появляется. В чем проблема? |
Консоль браузера наверно для лохов придумали, правда?
|
Консоль чист...
|
.delete случайно не внутри #adm-notification находится?
|
Нет, вот код.
<div id="adm-notification"> <div class="n_warning"><p></p></div> <div class="n_ok"><p></p></div> <div class="n_error"><p></p></div> </div> <table> <thead> <tr> <th scope="col">ID</th> <th scope="col">Category</th> <th scope="col">Title</th> <th scope="col">Image</th> <th scope="col">Short</th> <th scope="col">Date</th> <th scope="col">Lang</th> <th scope="col" style="width: 65px;">Modify</th> </tr> </thead> <tbody> <?php while($result_main_arm = mysql_fetch_array($query_main_arm)){ print " <tr id=".$result_main_arm['id']."> <td class=\"align-center\">".$result_main_arm['id']."</td> <td class=\"align-center\">".$result_main_arm['category']."</td> <td class=\"align-center\">".$result_main_arm['title']."</td> <td class=\"align-center\">".$result_main_arm['img']."</td> <td class=\"align-center\">".$result_main_arm['short_content']."</td> <td class=\"align-center\">".$result_main_arm['date']."</td> <td class=\"align-center\">".$result_main_arm['lang']."</td> <td> <a href=\"/admin/edit?id=".$result_main_arm['id']."&lang=".$result_main_arm['lang']."\" class=\"table-icon edit\" title=\"Edit\"></a> <a href=\"/admin/delete?id=".$result_main_arm['id']."&lang=".$result_main_arm['lang']."\" id=".$result_main_arm['id']." class=\"table-icon delete\" title=\"Delete\"></a> </td> </tr> "; } |
повесьте событие таким образом:
$(document).on('click', '.delete', function(e) {вместо: $('.delete').click(function(e) { |
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
ты когда по ссылке переходишь, то твой ajax в обработчике нажатия этой ссылки уже почти побоку становится
и слушай что danik.js говорит: смотри в консоль там не только ошибки надо смотреть, но и выводить туда для проверки нужные параметры |
Цитата:
|
по идее ссылка вот так должна выглядеть
<a href="#" id=".$result_main_arm['id']." class=\"table-icon delete\" title=\"Delete\"></a> а в коде на 23 строчке еще return false нужно добавить иначе у Вас ссылка срабатывает и все обработчики слетают |
Цитата:
return false в конце обработчика клика на ссылке и твой success отработает, так как страница осталась той же ну и стоит задуматься над тем, чтобы не городить такой код, находя элементы по id других элементов |
Цитата:
|
vadim5june,
bes, у него же preventDefault стоит, зачем там return false все правильно у него написано |
Цитата:
|
У меня все отлично, я проверял, запрос отправляется, и ответ приходит (succeess). Но вот после удаления, больше не нажимается .delete . Проблему решил тем, что добавил рефреш, после рефреша все ок. Но все же это не решение. Есть идеи?
|
Цитата:
Цитата:
|
Цитата:
и давай уже полный тестовый пример или ссылку на полный код |
Цитата:
то div с class='n_warning' не надо бы трогать-куда то его вынести иначе он в следующем цикле вот эти строчки $('.n_warning').fadeOut(500); не может выполнить |
после успешной обработки аякса, даже если на .delete алерт поставить не срабатывает
|
Цитата:
и я думаю vadim5june разгадал твою загадку у тебя на выводе /admin/delete что? |
Ну в общем я через рефреш страницы решил, думаю сойдет..
|
То есть после отработки обработчик click элементов .delete не вызывается вообще? Или вызывается, но делает то, что задумано? Не может же обработчик сам отсоединиться.. Изучай детальней в инспекторе. Смотри события, выполняй пошагово и т.д.
|
на /admin/delete обработчик переменных, запрос к базе (удаление)
|
да click не вызывается
|
Цитата:
что? |
Цитата:
1) не снял обработчик через $('.delete').off 2) не удалил (или перезаписал) этот элемент 3) не перезагрузил страницу 4) не перехватил клик родителем то такого быть просто не может. Так что чета ты мутишь... |
он записывает succesfully deleted! Ну ладно, я уже решил проблему, после обработки делается рефреш..
|
Цитата:
<div class="n_warning"><p></p></div> <div class="n_ok"><p></p></div> <div class="n_error"><p></p></div> исчезает навсегда :D проблему ты не решил, так как это из тех случаев, когда проще переписать всё заново как надо ;) |
Часовой пояс GMT +3, время: 02:03. |