在Jquery上替换.live()

时间:2013-10-03 19:27:45

标签: javascript jquery

一次。好吧,我也在使用pushState脚本,我正在使用jquery 1.6.2,但它正在使用.live(),但是使用jquery的v2.0.3,它已被弃用。所以,我不知道如何更换它,看:

$('.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);
    });
    });
});

2 个答案:

答案 0 :(得分: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);
    });
});

您需要绑定到文档以在添加新元素时选择它们。

希望这有帮助。

答案 1 :(得分: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);
    });
 });