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);
    });
    });
});
4

2 回答 2

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);
    });
});

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

希望这可以帮助。

于 2013-10-03T19:29:47.870 回答
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);
    });
 });
于 2013-10-03T19:29:57.640 回答