2016-07-24 19 views
0

いいえ属性valueの値が一部の文字列と等しいかどうかを確認しようとしています。それが本当であるかどうか私に教えるために警告を発すると、それは当てはまるでしょうが、その陳述が真であれば、クラスを追加することはできません。私が間違っていることは何ですか?属性で要素を比較する

<div class="firstch" value="20:30">TEST</div> 
div { 
    display:block; 
    border:1px solid black; 
} 
.disable { 
    background-color: red; 
} 
var attr = $('.firstch').attr('value'); 

if (attr === '20:30') { 
    $(this).addClass('disable'); 
} else { 
    alert('YEah right -_-'); 
} 

JsFiddle

+0

あなたの現在のコード$(これは)参照先のウィンドウです。クラス名で置き換えてください。 – CY5

答えて

0

上のコードは期待通りに働いています。問題は、thisがコード内のdocumentオブジェクトを参照していることです。それを以下に変更してください:

$('.firstch').addClass('disable'); 
1

divに属性valueを追加しています。このようにdocumentのみ <button>, <option>, <input>, <li>, <meter>, <progress>, <param>はこの属性を持っています。だから、カスタムを追加することができますdataこれに属性は

第二に、あなたがifループ内このを使用して参照するようにしようとしているのDIV。しかし、ここでは$(this)はjqueryオブジェクトをループしていないので失敗します。代わりに、単に比較と平等チェックです。したがって、適切なセレクタを使用して要素を参照する必要があります。

希望このスニペットは、あなたのセレクタがある便利な

HTML

<div class="firstch" data-value="20:30">TEST</div> // Note use of data attribute 

JS

var attr = $('.firstch').attr('data-value'); 

// For some browsers, `attr` is undefined; for others, `attr` is false. Check for both. 
if (attr === '20:30') { 
    $('.firstch').addClass('disable'); 
} else { 
    alert('YEah right -_-'); 
} 

JSFIDDLE

+0

うまくいっています。 :)また、選択された要素と20:30の "magic string"を意味のある名前付き変数に格納することを検討してください。 'var disableValue =" 20:30 "; var firstch = $( '。firstch'); if(firstch.attr( 'data-value')=== disableValue){firstch.addClass( 'disable'); } else {alert( 'うん右-_-'); } ' – SimianAngel

0

になりますここで$(this)をクラス

$(this).addClass('disable'); 

を追加することが間違っているあなたは、クラスを追加したい要素の正しいセレクタを使用する必要があり、ウィンドウオブジェクトです。