альтернатива множественному селектору данных

#jquery #jplist

#jquery #jplist

Вопрос:

Я использую плагин jplist и следую рекомендациям участника для переключения сортировки.

Но возникла проблема с множественным селектором атрибутов данных.

Для запуска мне нужно выбрать элемент по нескольким атрибутам, таким как data-path, data-order, и я не знаю почему: я не могу запустить с помощью селектора с несколькими атрибутами. Консоль не показывает никаких ошибок. Это просто не работает

 $('#toggle-order1').click(function() {

   // current sort button selected in sort group 1 -- return data-path
   var sortpath1 = $('#sortgroup1 .jplist-selected').attr('data-path');

   // current sort button selected in sort group 1 -- return data-order
   var sortorder1 = $('#sortgroup1 .jplist-selected').attr('data-order');

   if (sortorder1 == 'asc') {
       // *** This doesn't click any button
       $('button[data-path="'   sortpath1   '"] [data-order="desc"]').trigger('click');

       // *** This work but click all buttons that have data-path equals to sortpath1
       $('button[data-path="'   sortpath1   '"]').trigger('click');

   }
   else if (sortorder1 == 'desc') {
       // *** This doesn't click any button
       $('button[data-path="'   sortpath1   '"] [data-order="asc"]').trigger('click');

       // *** This work but click all buttons that have data-path equals to sortpath1
       $('button[data-path="'   sortpath1   '"]').trigger('click');
   }
});
  

Кнопки html :

 <div id="sortgroup1" class="jplist-box" data-control-type="sort-buttons-group" data-control-name="sort-buttons-group-1" data-control-action="sort" data-mode="single">

   <button id="set-asc-1" name="set" class="jplist-drop-down" data-path=".set" data-group="group1" data-type="text" data-order="asc" data-selected="false">
       Sort by Set AZ
   </button>

   <button id="set-desc-1" name="set" class="jplist-drop-down" data-path=".set" data-group="group1" data-type="text" data-order="desc" data-selected="false">
       Sort by Set ZA
   </button>

   <button id="price-asc-1" name="price" class="jplist-drop-down" data-path=".price" data-group="group1" data-type="number" data-order="asc" data-selected="false">
       Sort by Price ASC
   </button>

   <button id="price-desc-1" name="price" class="jplist-drop-down" data-path=".price" data-group="group1" data-type="number" data-order="desc" data-selected="false">
       Sort by Price DESC
   </button>

</div>
  

Переключение html

 <button id="toggle-order1"><i class="fa"></i></button>
  

Все предложения приветствуются.

Ответ №1:

Вы должны удалить пробел между атрибутами, так что это

 $('button[data-path="'   sortpath1   '"] [data-order="desc"]')
  

становится таким

 $('button[data-path="'   sortpath1   '"][data-order="desc"]')
//                                     ^^ look ma, no space
  

в противном случае вы ищете элементы-потомки, как и с

 $('div span')