Что то не так с кодом
$('.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, время: 23:33. |