4

我的 JavaScript 中有以下启动;顺便说一句,我总是使用 github 中显示的代码。完整的代码可以在这里看到

var
        /* Application Specific Variables */
        contentSelector = '.tab-content,.page-content,article:first,.article:first,.post:first',
        $content = $(contentSelector).filter(':first'),
        contentNode = $content.get(0),
        $menu = $('#menu,#nav-sub,.nav,.nav-sub:first').filter(':first'),
        activeClass = 'active selected current youarehere open',
        activeSelector = '.active,.selected,.current,.youarehere, .open',
        menuChildrenSelector = '> li,> ul > li',
        /* Application Generic Variables */
        $body = $(document.body),
        rootUrl = History.getRootUrl(),
        scrollOptions = {
            duration: 800,
            easing:'swing'
        };

问题在于:

contentSelector = '.tab-content,.page-content,article:first,.article:first,.post:first',

并在:

$menu = $('#menu,#nav-sub,.nav,.nav-sub:first').filter(':first'),

当菜单点击进去时.nav,不得不改变.page-content

单击菜单时.nav-sub,必须将内容替换为.tab-content

问题是,两个菜单都发生了变化.page-content,而不仅仅是选项卡内容或页面内容。

知道如何改变这个吗?

4

2 回答 2

1

修复您的内容选择

从改变

contentSelector = '.tab-content,.page-content,article:first,.article:first,.post:first'

contentSelector = '.tab-content, .page-content, .article:first, .post:first'
于 2012-06-25T21:23:59.510 回答
0

History.js 没有替换错误的内容;ajaxify-html5.js(您正在使用的脚本)完全按照它的设计:

  • 如果用户单击内部链接(并且该链接没有no-ajaxy类),则脚本会拦截单击,停止浏览器加载页面,并为页面发起 Ajax 请求。

    请注意,这包括页面上的所有内部链接,而不仅仅是菜单中的链接。

  • 当 Ajax 请求完成时,脚本将当前页面上的内容替换为响应中的内容(并执行一些其他巧妙的操作,例如activeClass在右侧菜单项上设置 ,更新页面标题并从响应中运行脚本)。

    该脚本使用找到的第一个元素contentSelector作为“内容”节点。这不取决于用户点击了哪个链接。


如果您只想“ajaxify”菜单链接,您可以更改(第 95 行):

$body.ajaxify();

改为调用.ajaxify()您的菜单元素。

如果您想用新内容更新不同的元素,您可以更改(第 145 行):

$content.html(contentHtml).ajaxify().css('opacity',100).show(); /* you could fade in here if you'd like */

改为更新另一个元素。

于 2012-06-26T04:27:09.493 回答