0

关于为什么这不起作用的任何想法。我正在使用 CSS-Tricks 中的教程使用 AJAX 动态加载页面。直到我在某些页面上引入了导致页面正常加载的辅助导航之前,这都可以正常工作。

这是我正在使用的代码。我正在使用类来设置不同导航区域的样式。

$(function() {

var newHash      = "",
    $mainContent = $("#main-content"),
    $pageWrap    = $("#page-wrap"),
    baseHeight   = 0,
    $el;

$pageWrap.height($pageWrap.height());
baseHeight = $pageWrap.height() - $mainContent.height();

$("nav").delegate("a", "click", function() {
    window.location.hash = $(this).attr("href");
    return false;
});

$(window).bind('hashchange', function(){

    newHash = window.location.hash.substring(1);

    if (newHash) {
        $mainContent
            .find("#guts")
            .fadeOut(200, function() {
                $mainContent.hide().load(newHash + " #guts", function() {
                    $mainContent.fadeIn(200, function() {
                        $pageWrap.animate({
                            height: baseHeight + $mainContent.height() + "px"
                        });
                    });
                    $("nav a").removeClass("current");
                    $("nav a[href="+newHash+"]").addClass("current");
                });
            });
    };

});

$(window).trigger('hashchange');

});

网站:http ://darynjohnson.com/Medical%20Futures/about.php

4

1 回答 1

0

这些新创建的链接没有绑定任何事件,因为您在未更改的对象上设置了 delagate 函数。具有相同标签(此处为“nav”)的新添加对象不会延迟。

利用:

$('#page').delegate("nav a", "click", function() {
  window.location.hash = $(this).attr("href");
  return false;
});

另外我建议您将 jQuery 升级到最新版本并将 delegate() 替换为 on()

于 2012-09-02T22:09:10.197 回答