2016-12-21 7 views
0

私は携帯のメニューに問題が、このサイト上で動作していないトグルがあります。http://www.toscanzahoeve.beJavascriptが動作するようには思えない

モバイルメニュートグル(ディスプレイPX 975以下)が動作しません。 javascriptはトグルそのもの(クラスは 'アクティブ'になります)では動作しますが、下の 'nav'要素では動作しません(スタイルは 'display:none'から 'display:block'に切り替える必要があります)。

これは、それが作業を行うサイトです。http://downloadaproduct.com/

そしてこれはjavascriptのコードです:私はこれを解決しようと時間を費やし

(function(window, $, undefined) { 
'use strict'; 

$('nav').before('<button class="menu-toggle" role="button" aria-pressed="false"></button>'); // Add toggles to menus 
$('nav .sub-menu').before('<button class="sub-menu-toggle" role="button" aria-pressed="false"></button>'); // Add toggles to sub menus 

// Show/hide the navigation 
$('.menu-toggle, .sub-menu-toggle').on('click', function() { 
    var $this = $(this); 
    $this.attr('aria-pressed', function(index, value) { 
     return 'false' === value ? 'true' : 'false'; 
    }); 

    $this.toggleClass('activated'); 
    $this.next('nav, .sub-menu').slideToggle('fast'); 

}); 

})(this, jQuery); 

、任意の助けをいただければ幸いです!

おかげで、 Stefaan

+1

は、あなたがより特異的であることができる:

は、私が何をしたいことは結果(trueまたはfalse、許容値の両方を返します)、あなたの関数の本体のではなく、機能そのものだと思います効果的にあなたを助けることができますか? 「うまくいかない」とはどういう意味ですか?間違いましたか?もしそうなら、それはどの行にあり、正確なエラーメッセージは何ですか? –

+1

あなたはjQueryを含まないので(あなたは 'slideToggle'できません)、あなたの選択は' navs'だけでなく '.sub-menu'でなく、' next'を使うこともできません。あなたはjQueryをインクルードし、次に兄弟を検索しますが、 'nav'要素は' this'より前です。 – Nate

答えて

1

あなたはあなたのコードについては、「動作しない」ものを指定していないが、私はこの見ていますか:あなたはの値を設定している、ここで

$this.attr('aria-pressed', function(index, value) { 
    return 'false' === value ? 'true' : 'false'; 
}); 

aria-pressedの属性を(これがイベントハンドラでない場合と同じように)関数に渡します。このシナリオでは、関数は実際には実行されません。関数全体が単に属性の値になります。

  • /真偽:デフォルト "偽" の値を持つtrueまたはfalseのいずれかを表す値、

    W3C Specによると、この属性は次の値を持つことができます。

  • トライステート:trueまたはfalseを表す値。中間値は "mixed"です。特に指定しない限り、デフォルト値は "false"です。
  • 真/偽/未定義:真または偽を表す値。> デフォルト値「未定義」は、状態またはプロパティが と一致しないことを示します。
  • ID参照:同じ 文書
  • ID参照における別の要素のIDへの参照:一つ以上のIDの参照のリストを一覧表示します。
  • 整数:分数成分のない数値。
  • 数字:実際の数値です。 string制約のない値の型。
  • トークン:許可された値の制限されたセットの1つです。
  • トークンリスト:1つ以上のトークンのリスト。

ご覧のとおり、機能は値として受け入れられません。

$this.attr('aria-pressed', ('false' === value ? 'true' : 'false')); 
関連する問題