JQuery селектор для выбора элемента путем сравнения его двух атрибутов данных

0

Я хочу выбрать элемент, сравнивая его два атрибута данных, если они равны или нет. Возможно ли, и если да, то как? в качестве примера, мне нужно выбрать li

<li data-prevstate="true" data-currstate="false">

где предыдущее состояние и текущее состояние равны.

  • 4
    Не могли бы вы предоставить какие-либо коды, пожалуйста?
  • 0
    отредактировал вопрос, извините, я случайно использовал цитату вместо форматирования кода и исчез из-за открывающейся угловой скобки.
Теги:
jquery-selectors

3 ответа

3
Лучший ответ
<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'); 
 });

Это выберет два элемента из набора элементов, которые указаны выше.

  • 0
    Опять же (из другого комментария), почему вы не делаете $(this).data('prevstate') == $(this).data('currstate') ? Кроме этого, это лучший, самый краткий ответ
  • 0
    @ Bojangles Ответ Обновлено в соответствии с вашим комментарием. Спасибо за указание на это.
2

Может быть, это?

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);
}
});
  • 0
    Почему вы не делаете $(this).data('prevstate') == $(this).data('currstate') ?
  • 0
    @ Bojangles Я не был уверен в этом. Спасибо за обновление моей информации JS. :)
Показать ещё 2 комментария
1
<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, чьи текущие и предыдущие данные соответствуют

Ещё вопросы

Сообщество Overcoder
Наверх
Меню