Замена .live () на Jquery

0

еще раз. Ну, я делаю также скрипт pushState, который я делал с jquery 1.6.2, но он работал с.live(), но с v2.0.3 jquery он устарел. Итак, я не знаю, как я могу его заменить, посмотрите:

$('.a').live('click', function(e){
        history.pushState(null, null, this.href);
        replacePag(this.href);
        e.preventDefault();
        $(window).bind('popstate', function(){
        replacePag(location.pathname);
    });
    });

Когда я запускаю его с одним элементом с классом.a, он отлично работает, но на моей странице много элементов.a. Я попробовал это с помощью.on(), но ни один из них не работает.

$('.a').on('click', function(e){
            history.pushState(null, null, this.href);
            replacePag(this.href);
            e.preventDefault();
            $(window).bind('popstate', function(){
            replacePag(location.pathname);
        });
        });

Если вы можете мне помочь, спасибо за вашу помощь.

Ну, мой сценарий:

$(function(){
    var replacePag = function(ur) {
        $.ajax({
            url: ur,
            type: 'get',
            dataType: 'html',
            success: function(dat){
                var domm = $(dat);
                var titl = domm.filter('title').text();
                var htm = domm.filter('#body').html();
                $("#body").fadeOut(100,
                function(){
                    $(this).html(htm);
                    $('title').text(titl);
                    }).fadeIn( 1000 );
            }
        });
    }

    $('.a').live('click', function(e){
        history.pushState(null, null, this.href);
        replacePag(this.href);
        e.preventDefault();
        $(window).bind('popstate', function(){
        replacePag(location.pathname);
    });
    });
});
  • 0
    Кроме того, вы не можете просто заменить .live на .on дословно, вы должны .on целевой элемент. Проверьте документы!
Теги:

2 ответа

1
Лучший ответ

Функция on позволяет обойти это, обрабатывая их на другом элементе, когда событие "пузырится до" родительского элемента. В этом случае мы могли бы указать элемент документа - может быть более общий общий родитель, который вы могли бы выбрать.

попробуй это:

$(document).on('click','.a', function(e){
    history.pushState(null, null, this.href);
    replacePag(this.href);
    e.preventDefault();
    $(window).bind('popstate', function(){
        replacePag(location.pathname);
    });
 });
  • 0
    Спасибо, это тоже работает правильно!
  • 0
    отлично, примите ответ, если вы решили свою проблему
Показать ещё 1 комментарий
1

Как это:

$(document).on('click', '.a', function(e){
    history.pushState(null, null, this.href);
    replacePag(this.href);
    e.preventDefault();
    $(window).bind('popstate', function(){
        replacePag(location.pathname);
    });
});

вам нужно привязать к документу, чтобы забрать новые элементы по мере их добавления.

Надеюсь это поможет.

  • 0
    Ммм, нет, это не сработало. Я тоже это попробовал.
  • 0
    Извиняюсь, я увидел , как a элементы, а не классы .a , попробуйте обновленный код :)
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню