проблемы с .live и ajax - PullRequest
       7

проблемы с .live и ajax

2 голосов
/ 06 сентября 2011

У меня есть этот код:

$(document).ready(function() 
{
    $(".vote, .vote1").click(function()
    {
        var id = $(this).attr("id");
        var name = $(this).attr("name");
        var dataString = 'id='+ id ;
        var parent = $(this);

        if(name=='mod_up')
        {
            $(this).fadeIn(200).html('<img src="dot.gif" align="absmiddle">');
            $.ajax({
                type: "POST",
                url: "mod_up_vote.php",
                dataType: "xml",
                data: dataString,
                cache: false,
                success: function(xml)
                {
                    //$("#mod-pregunta").html(html);
                    //$("#mod-respuesta").html(html);
                    //parent.html(html);
                    $(xml).find('pregunta').each(function()
                    {
                        var id = $(this).attr('id');
                        var pregunta = $(this).find('preguntadato').text();
                        var respuesta = $(this).find('respuestadato').text();
                        var votoup = $(this).find('votoup').text();
                        var votodown = $(this).find('votodown').text();
                        var id_pregunta = $(this).find('id_pregunta').text();
                        var id_respuesta = $(this).find('id_respuesta').text();
                        $("#mod-pregunta").html(pregunta);
                        $("#mod-respuesta").html(respuesta);
                        $(".vote1").html("<a href=\"\" title=\""+ id_pregunta + "-"+ id_respuesta + "-1\" class=\"vote1\" id=\""+ id_pregunta + "-"+ id_respuesta + "-1\" name=\"mod_up\">Aceptar</a>");
                    });
                }
            });
        }
    });
});

По этой ссылке обновляется база данных и показывается новый вопрос и ответ.

<a href="" title="up" class="vote1" id="<?php echo $id_pregunta."-".$id_respuesta; ?>-1" name="mod_up">Accept</a>

Но если я щелкну еще раз в ссылке Accept, то будет отображаться только gif (), и он не обновит базу данных, и не отобразит новый вопрос и ответ.

Как мне использовать .live ()? или .delegate ()? или что мне нужно?

Ответы [ 2 ]

9 голосов
/ 06 сентября 2011

Я предпочитаю .delegate.Вот интересная статья о .delegate и .live:

http://www.alfajango.com/blog/the-difference-between-jquerys-bind-live-and-delegate/

Вот также, что вам нужно сделать:

$(document).ready(function() 
{
    $(document).delegate('.vote, .vote1', 'click', function()
    {
        //code
    });
});
4 голосов
/ 06 сентября 2011

Используйте jQuery live вместо click.

$(".vote, .vote1").live('click', function(){

.......
......


});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...