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 に答える