0

URLで渡されたハッシュに基づいてJavaScriptをトリガーしています。

しかし、ハッシュが私が期待しているものでない場合、私はトリガーしたくありません。

予想されるハッシュのリストは、data-category属性を使用して定義されます。

ハッシュが配列内にあるかどうかを確認できるように、このデータの配列を取得するにはどうすればよいですか?

これが私が与えられたHTMLです:

    <div class="filter_padder" id="nav_channels">
        <div class="filter_wrapper" style="max-width:650px;">
            <div class="filter selected" data-category="cat-all">ALL</div>
            <div class="filter" data-category="MusicWorld">MusicWorld</div>
            <div class="filter" data-category="Awards">Awards</div>
            <div class="filter" data-category="MX">Exchange</div>
            <div class="filter last-child" data-category="Com">Community</div>
            <div class="clear"></div>
        </div>
    </div>

Javascript:

// set any hash in the url to a variable
var hash = location.hash.replace('#', '');

// see if my hash is expected (would like to handle this dynamically)
if(hash === (cat_all|Awards|MX|Com)) {
  doSomething();
}

しかし、「ハッシュ」と比較する要素のリストを動的に作成する方法がわかりません。私はそれが次のようなものだと思います:

$('#nav_channels').data('category');

しかし、それを機能させることはできません。

4

2 に答える 2

1

これを試して :

var hash = location.hash.replace('#', '');
if( $('.filter[data-category="'+hash+'"]').length ) { 
  doSomething();
};
于 2013-02-21T15:41:22.603 に答える
0

次のように値を配列に取得できます。

var cats = $('[data-category]').map(function() {
    return $(this).data('category');
}).get();
于 2013-02-21T15:43:17.317 に答える