2012-03-11 7 views
3

hasClassは、要素に何らかのクラスがあるかどうかをチェックしたいときに便利です。他の属性についても同じチェックをしたい。たとえば、他の属性名のjQuery hasClass

を使用し、このdivがユーザーに利用可能かどうかを確認したいとします。だから、私はそれを好むだろう

$('#nav').hasAttributeValue('data-available-for', 'users') 

これのための既存の美しい小さな解決策はありますか?

+1

これはユーザアクセス制御を実装するための非常に悪い方法のようです。 –

+0

実際、私のニーズをよりよく理解するのは単なる例です。私はユーザーのアクセス制御のためにそれを使用するつもりはない)。 –

+0

その場合、私はあなたが間違った終わりから問題を解決していると思う。イベントの委任とターゲットの属性のチェックを使用すると、それを行うためのより良い方法です。 –

答えて

1

は、私はあなたがattrを探していると思う:それは非常に簡単だ

$('#nav').attr('data-available-for', 'users'); // data-available-for="users" 
+1

は、例に基づいて '== users'には当てはまりません – charlietfl

+0

あなたは正しいです。質問をよりよく反映するように私の答えを更新しました。 – rjz

3

if ($('#nav').attr('data-available-for').split(' ').indexOf('users') != -1) { 
    // do stuff 
} 

同様に、あなたは2番目の引数としての属性の新しい値を渡すことで属性を設定することができます。

$('#nav').attr('data-available-for').indexOf('users') != -1 

jqueryヘルパーを作成することができます。

if ($("#nav[data-available-for~=user]").length) { 
    // is available for 'user' 
} 

するか、ご希望の場合は、要素が条件と混合していない:

1

あなたはCSSセレクタを利用することができますが、その上に機能を構築することができます。もちろん、

if ($("#nav").filter("[data-available-for~=user]").length) { 
    // is available for 'user' 
} 

それはあなたのためにそれをより読みやすくします。

0

私は図書館に戻って落ちる前に、いくつかのネイティブJavaScriptを使用しようとするだろう。あなたはシリアル化されたDOMオブジェクトのデータセットの属性を使用することができ、それが実現しています

<div id='strawberry-plant' data-fruit='12'></div> 

<script> 
var plant = document.getElementById('strawberry-plant'); 

//'Getting' data-attributes using getAttribute 
var fruitCount = plant.getAttribute('data-fruit'); // fruitCount = '12' 

// 'Setting' data-attributes using setAttribute 
plant.setAttribute('data-fruit','7'); // Pesky birds 
</script> 

<div id='sunflower' data-leaves='47' data-plant-height='2.4m'></div> 

<script> 
// 'Getting' data-attributes using dataset 
var plant = document.getElementById('sunflower'); 
var leaves = plant.dataset.leaves; // leaves = 47; 

// 'Setting' data-attributes using dataset 
var tallness = plant.dataset.plantHeight; // 'plant-height' -> 'plantHeight' 
plant.dataset.plantHeight = '3.6m'; // Cracking fertiliser 
</script> 

加えて、あなたはこの

<script> 
// Select all elements with a 'data-flowering' attribute 
document.querySelectorAll('[data-flowering]'); 

// Select all elements with red leaves 
document.querySelectorAll('[data-foliage-colour="red"]'); 
</script> 

querySelectorAll(のようなquerySelectorAllといくつかの本当に強力な選択を使用することができます) caniuse.comによると、オンラインの人の90%近くがサポートしています http://caniuse.com/queryselector

これはほんの始まりです。ここでcss3クエリセレクタのフルパワーをチェックしてください: http://www.w3.org/TR/selectors/#selectors