Slyweb
На разработку сайта! Скидки 50%!

Jquery+Ajax ссылка одноразовая((

Вы можете задавать любые вопросы по jQuery.

Jquery+Ajax ссылка одноразовая((

Сообщение pandanotbreathing » 29 фев 2012, 00:33

Добрый день. У меня возникла проблема и ума не приложу как ее решить. Подскажите пожалуйста кто сталкивался с таким.
Собственно задача такая: есть список отзывов(аля сообщений). возле каждого из них есть кнопка "Удалить" в виде ссылки (
Код: Выделить всё
<a href="/*ID отзыва/сообщения*/" class="delete_review_link">Удалить</a>
)
в параметре href хранится id отзыва для передачи его php обработчику при нажатии на ссылку.
вот собственно сам код:
Код: Выделить всё
$('.delete_review_link').click(function(f){
        f.preventDefault();
        if (confirm("Удалить выбранный отзыв?")){
            $.post("../core/includes/ajax_delete_review.php",{review_id: $(this).attr('href'), object_id: $('#object_id_for_review').val()}, function(review_delete_answer){
                $('#review_content').html(review_delete_answer);
            });
        }
    });

Проблема в том что первый раз ссылка срабатывает как положено, а при втором нажатии оно переходит на ID отзыва.
Подскажите где я напортачил? Заранее спасибо.=)
pandanotbreathing
 
Сообщения: 4
Зарегистрирован: 29 фев 2012, 00:25

Re: Jquery+Ajax ссылка одноразовая((

Сообщение admin » 29 фев 2012, 10:18

Я так понимаю, что у Вас post запрос возвращает ссылку, по которой Вы пытаетесь нажать. Для элементов создаваемых не при загрузке страницы используйте обработчик live, а не click.

По крайней мере этот код работает постоянно:
Код: Выделить всё
<!doctype html>
<html lang="en">
<head>
   <title></title>

   <script type="text/javascript" src="jquery-1.6.1.min.js"></script>

   <style type="text/css">
      body {height: 600px;}
      div {width: 100px; height: 100px; border: 1px solid red; }
   </style>
<script type="text/javascript">
$(document).ready(function(){

$('.delete_review_link').click(function(f){
        f.preventDefault();
        if (confirm("Удалить выбранный отзыв?")){
            $.post("../core/includes/ajax_delete_review.php",{review_id: $(this).attr('href'), object_id: $('#object_id_for_review').val()}, function(review_delete_answer){
                $('#review_content').html(review_delete_answer);
            });
        }
    });
            });
</script>
</head>
<body>
<a href="1" class="delete_review_link">Удалить</a>
</body>
</html>
admin
Администратор
 
Сообщения: 165
Зарегистрирован: 15 авг 2009, 20:02

Re: Jquery+Ajax ссылка одноразовая((

Сообщение pandanotbreathing » 29 фев 2012, 20:12

admin писал(а):Я так понимаю, что у Вас post запрос возвращает ссылку, по которой Вы пытаетесь нажать. Для элементов создаваемых не при загрузке страницы используйте обработчик live, а не click.

Да, Вы все правильно поняли =), но к сожалению через live тоже не работает =(
пробовал и заменять click на live, и просто прописать и для click и для live действия. Всё та же история=)
Но все равно спасибо за помощь!
pandanotbreathing
 
Сообщения: 4
Зарегистрирован: 29 фев 2012, 00:25

Re: Jquery+Ajax ссылка одноразовая((

Сообщение admin » 01 мар 2012, 07:02

Укажите Ваш код с функцией live.
admin
Администратор
 
Сообщения: 165
Зарегистрирован: 15 авг 2009, 20:02

Re: Jquery+Ajax ссылка одноразовая((

Сообщение pandanotbreathing » 01 мар 2012, 18:16

Код: Выделить всё
$('.delete_review_link').click(function(f){
        f.preventDefault();
        if (confirm("Удалить выбранный отзыв?")){
            $.post("../core/includes/ajax_delete_review.php",{review_id: $(this).attr('href'), object_id: $('#object_id_for_review').val()}, function(review_delete_answer){
                $('#review_content').html(review_delete_answer);
            });
        }
    });
$('.delete_review_link').live(function(g){
        g.preventDefault();
        if (confirm("Удалить выбранный отзыв?")){
            $.post("../core/includes/ajax_delete_review.php",{review_id: $(this).attr('href'), object_id: $('#object_id_for_review').val()}, function(review_delete_answer){
                $('#review_content').html(review_delete_answer);
            });
        }
    });

Это был первый вариант.
второй просто лайв:
Код: Выделить всё
$('.delete_review_link').live(function(f){
        f.preventDefault();
        if (confirm("Удалить выбранный отзыв?")){
            $.post("../core/includes/ajax_delete_review.php",{review_id: $(this).attr('href'), object_id: $('#object_id_for_review').val()}, function(review_delete_answer){
                $('#review_content').html(review_delete_answer);
            });
        }
    });
pandanotbreathing
 
Сообщения: 4
Зарегистрирован: 29 фев 2012, 00:25

Re: Jquery+Ajax ссылка одноразовая((

Сообщение admin » 01 мар 2012, 21:23

У Вас live неправильная(см.http://slyweb.ru/jquerydoc/live-type-fn.php):

Код: Выделить всё
$('.delete_review_link').live(function(g){

на
Код: Выделить всё
$('.delete_review_link').live('click',function(g){
admin
Администратор
 
Сообщения: 165
Зарегистрирован: 15 авг 2009, 20:02

Re: Jquery+Ajax ссылка одноразовая((

Сообщение pandanotbreathing » 01 мар 2012, 22:05

Спасибо, Вам огромное!
pandanotbreathing
 
Сообщения: 4
Зарегистрирован: 29 фев 2012, 00:25


Вернуться в Вопросы по jQuery

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1