AJAX добавление обработчика событий

Тема в разделе "JavaScript", создана пользователем casinolot, 12 сен 2012.

Модераторы: ZiX
  1. casinolot

    casinolot

    Регистр.:
    22 окт 2010
    Сообщения:
    548
    Симпатии:
    84
    вот обработчик
    Код:
        $(".person .person-control p,.person .person-control p.meny").click(function(){   
                if($(this).attr("rel") != 'profil' && $(this).attr("rel") != 'close') {
                    var $homeDiv = $(this).parent().parent().parent();   
                    $homeDiv.addClass("active");
                    if(!$homeDiv.is(".foto")) {
                        if(!$(this).is(".active")) {
                            $(".hidden-box").hide();
                            $(".person").removeClass("active");
                            $homeDiv.addClass("active");
                            $(".person .person-control a").removeClass("active");
                            $("div.v"+$(this).attr("rel"), $homeDiv).slideDown(100);         
                            $(this).addClass("active");
                        } else {                     
                            $("div.v"+$(this).attr("rel"), $homeDiv).hide();
                            $(this).removeClass("active");
                        }
                    } else {
                        if(!$(this).is(".active")) {
                            $(".hidden-box").hide();
                            $(".person").removeClass("active");
                            $homeDiv.addClass("active");
                            $(".person .person-control a").removeClass("active");
                            $("div.v"+$(this).attr("rel"), $homeDiv).slideDown(100);         
                            $(this).addClass("active");
                        } else { 
                            $homeDiv.removeClass("active");
                            $("div.v"+$(this).attr("rel"), $homeDiv).hide();
                            $(this).removeClass("active");
                        }
                    }
                }
                return true;
        });
    Почему-то если добавлять после успешного ajax запроса на новые тэги этот обработчик, на старых тэгах прекращает работать
     
  2. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    для навешивания обработчика на новые элементы применяются методы bind и live...
    Код:
      $(".person .person-control p,.person .person-control p.meny").live("click", function(){...... 
     
  3. Delfi

    Delfi Создатель

    Регистр.:
    16 июн 2011
    Сообщения:
    44
    Симпатии:
    11
    live уже тоже не советуют.
    Сейчас все обработчики сводят на $.on

    Например $('div.content').on('click', 'a.button', function() { console.log('blablbalbal')});

    Т.е. jquery будет отслеживать все 'a.button', в том числе и новые, которые находятся в div.content