Я хочу выбрать элемент, сравнивая его два атрибута данных, если они равны или нет. Возможно ли, и если да, то как? в качестве примера, мне нужно выбрать li
<li data-prevstate="true" data-currstate="false">
где предыдущее состояние и текущее состояние равны.
<li data-prevstate="true" data-currstate="false">
<li data-prevstate="true" data-currstate="false">
<li data-prevstate="true" data-currstate="true">
<li data-prevstate="true" data-currstate="false">
<li data-prevstate="true" data-currstate="true">
Может быть, это.?
$('li').filter(function() {
return $(this).data('prevstate') == $(this).data('currstate');
});
Это выберет два элемента из набора элементов, которые указаны выше.
$(this).data('prevstate') == $(this).data('currstate')
? Кроме этого, это лучший, самый краткий ответ
Может быть, это?
var selected = '';
$('li').each(function() {
if($(this).attr('data-prevstate') == $(this).attr('data-currstate')) {
selected = $(this);
}
});
Теперь вы можете выполнять любые действия с selected
ИЛИ как предлагается:
var selected = '';
$('li').each(function() {
if($(this).data('prevstate') == $(this).data('currstate')) {
selected = $(this);
}
});
$(this).data('prevstate') == $(this).data('currstate')
?
<ul>
<li data-prev="abc" data-curr="abc">Lorem Ipsum</li>
<li data-prev="abc" data-curr="abc">Lorem Ipsum</li>
<li data-prev="abc" data-curr="abc">Lorem Ipsum</li>
</ul>
<script>
$(document).ready( function(){
var matches = [];
$('li').each( function( i, o ){
$o = $(o);
if( $o.data('prev') == $o.data('curr') )
matches.push($o);
});
console.log(matches);
});
</script>
Получат все элементы li, чьи текущие и предыдущие данные соответствуют