2017-11-24 8 views
-1

data-idでデータループをフィルタリングし、数値と比較したいとします。 だから私はのdivの中に日付-IDをチェックして、私は表示メッセージdivデータとの比較値jquery

var ids = $('.div').data('id'); 
 
ids.forEach(function(id) { 
 
    if (id == '45') { 
 
    alert('isset 45'); 
 
    } else { 
 
    alert('not value 45 in div'); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="div" data-id="12">12</div> 
 
<div class="div" data-id="33">33</div> 
 
<div class="div" data-id="44">44</div> 
 
<div class="div" data-id="45">45</div> 
 
<div class="div" data-id="54">54</div> 
 
<div class="div" data-id="11">11</div>

と一致した場合、私と値を比較残念ながら、スクリプトが

+1

jQueryアクセサは、リストの最初の項目にのみ作用します。 – Dormilich

答えて

1

ありますが動作しません。各方法は$('selector')で利用できます。セレクタはすべてのdivを選択し、次にそれらを1つずつ反復してdata-idをチェックすることができます。また、ループの前にdata-idを抽出していました。あなたはループ内でそれを取得する必要があります。

$('.div').each(function() { 
 
    id = $(this).data('id') 
 
    if (id == '45') { 
 
    alert('isset 45'); 
 
    } else { 
 
    alert('not value 45 in div'); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="div" data-id="12">12</div> 
 
<div class="div" data-id="33">33</div> 
 
<div class="div" data-id="44">44</div> 
 
<div class="div" data-id="45">45</div> 
 
<div class="div" data-id="54">54</div> 
 
<div class="div" data-id="11">11</div>

+0

これをやってます.... –

+0

それは働いています。どうもありがとうございました! – urbmake

+0

満足すれば受け入れられます。 :) –

3

ids*first* .div`要素からdata-id値を含む文字列であるため、問題があります。当面の問題を解決するには、配列使用して値の配列を作成する必要があります。直接、その後、チェック

var ids = $('.div').map(function() { 
 
    return $(this).data('id'); 
 
}).get(); 
 

 
ids.forEach(function(id) { 
 
    if (id == '45') { 
 
    console.log('isset 45'); 
 
    } else { 
 
    console.log('not value 45 in div'); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="div" data-id="12">12</div> 
 
<div class="div" data-id="33">33</div> 
 
<div class="div" data-id="44">44</div> 
 
<div class="div" data-id="45">45</div> 
 
<div class="div" data-id="54">54</div> 
 
<div class="div" data-id="11">11</div>

言われていることを、より良いアプローチは、要素(複数可)を見つけるだろう何かが見つかった場合。

var $el = $('.div').filter(function() { 
 
    return $(this).data('id') == 45; 
 
}); 
 

 
if ($el.length) { 
 
    console.log('isset 45'); 
 
} else { 
 
    console.log('not value 45 in div'); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="div" data-id="12">12</div> 
 
<div class="div" data-id="33">33</div> 
 
<div class="div" data-id="44">44</div> 
 
<div class="div" data-id="45">45</div> 
 
<div class="div" data-id="54">54</div> 
 
<div class="div" data-id="11">11</div>

+1

それは本当です。しかしそれは奇妙な要件です。確かに要素が存在するかどうかを知る必要があります。 –

3

data()は、リストのみの拳項目から値を返します。このメソッドは、ループに必要ないことを意味します。

あなただけ

var divWith45Exists = $('.div[data-id="45"]').length > 0; 

デモ

var divWith45Exists = $('.div[data-id="45"]').length > 0; 
 
divWith45Exists ? alert("yes") : alert("No");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="div" data-id="12">12</div> 
 
<div class="div" data-id="33">33</div> 
 
<div class="div" data-id="44">44</div> 
 
<div class="div" data-id="45">45</div> 
 
<div class="div" data-id="54">54</div> 
 
<div class="div" data-id="11">11</div>

0

これは、可能な解決策の一つである可能性をチェックし、ではないが反復を行います

jQuery(document).ready(function() { 
 

 
    // Loop through each div 
 
    $('.div').each(function() { 
 

 
    // current element 
 
    var el = $(this); 
 

 
    // value 
 
    var dataId = el.attr('data-id'); 
 

 
    if (dataId == '45') { 
 
     console.log('isset 45'); 
 
    } else { 
 
     console.log('not value 45 in div'); 
 
    } 
 

 
    }); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="div" data-id="12">12</div> 
 
<div class="div" data-id="33">33</div> 
 
<div class="div" data-id="44">44</div> 
 
<div class="div" data-id="45">45</div> 
 
<div class="div" data-id="54">54</div> 
 
<div class="div" data-id="11">11</div>

関連する問題