【问题标题】:jquery fail on DOM modify made with html()jquery 在使用 html() 进行的 DOM 修改上失败
【发布时间】:2012-07-16 21:21:41
【问题描述】:

在我的网站中,我基于hashchange构建页面导航:

var hashHome;
$(window).bind( 'hashchange', function(e) {
    var homeClass = "home";
    var url = $.param.fragment();
    if($('#page-content').hasClass(homeClass)){
        hashHome = $('#page-content').html();
    }

    if(url ==''){
        //homepage with nothing(no hash)
        if(!$('#page-content').hasClass(homeClass)){
            //alert("load frim cache ->#"+url);
            $('#page-content').addClass(homeClass);

            $('#page-content').html(hashHome);
        }
    }else{
        //go to some page 
        if($('#page-content').hasClass(homeClass))
            $('#page-content').removeClass(homeClass);
        initAction(url);
    }
})
$(window).trigger( 'hashchange' );

当网站加载其主页时,主页将存储在hashHome。如果用户离开,initAction(id) 会将整个$('#page-content') 的内容替换为其他页面的内容。当用户导航回首页时,它将存储的首页还原回$('#page-content')

我的问题是所有的 jQuery 都停止在主页上工作了。

我已经阅读过关于live() 的信息,但它似乎需要像click() 这样的事件才能工作。我该如何解决这个问题?

【问题讨论】:

  • 您是否尝试过使用 Firebug 之类的工具来查看任何错误?您也可以将代码包装在 try { }catch(e){alert(e); }
  • 没有发现错误,控制台没有打印任何东西。
  • 是否需要在$(document).ready({});

标签: javascript jquery html hashchange


【解决方案1】:

我发现在更改围绕它的 div 的内容之前,我需要存储整个页面

var content$('#page-content').html();

然后进行内容更改

这样,当我重新初始化所有 jQuery 插件时,它们将失去所有旧引用并使用新的 content 变量,而不是双重初始化

最后,我的原始问题代码也不起作用,因为脚本标签看起来像这样:<script type="text/javascript">...</script>,IE 由于某些原因无法识别,所以我必须将其更改为 <script></script>为了使其跨浏览器兼容

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 2012-09-22
    相关资源
    最近更新 更多