LINUX.ORG.RU

jQuery, выбор по классу и атрибуту

 , , ,


0

1

Друзья, у меня есть таблица! Помогите пожалуйста. Хотелось бы сделать так:

var переменная = элемент с классом "классный";
если(у переменной есть атрибут checked){
    применить для остальных ячеек ряда одни параметры;
}иначе{
    другие;
}
Не понимаю я джаваскрипт.

★★★★★

jquery

Google: jquery basic logical operators plugin.

Извини, не сдержался.

ChALkeR ★★★★★
()
Последнее исправление: ChALkeR (всего исправлений: 1)

Не понимаю я джаваскрипт.

В job

Noob_Linux ★★★★
()
$('.class[attribute]').css('background-color', 'orange');

man jquery

anonymous
()

Спасибо. Вот только подсвечивать только активную строку таблицы не получается. Ячейки нужные окрашиваются и всё, постепенно окрашивается вся таблица.

http://codepen.io/baryonyx/pen/LbMwar

cinyflo ★★★★★
() автор топика

А ты вообще уверен, что лучше это делать через jquery? Может лучше разобраться в ангуляре?

nikolnik ★★★
()
Ответ на: комментарий от cinyflo

Не совсем понимаю, что ты пытаешься сделать, но если заменить $().parent на $.parents(), который выбирает не только непосредственных родителей, а любых выше по иерархии, то будут закрашиваться ряды целиком. Так что ли?

function orange() {
  $("label[checked]")
    .parents("tr")
    .css("background-color", "#f47932");
}

function checked() {
  $(this).attr("checked", true);
  orange();
}

$("label").click(checked);

anonymous
()
Ответ на: комментарий от cinyflo

http://codepen.io/anon/pen/oYmvQK


jQuery(document).ready(function() {
  jQuery(document).on('change', 'table tbody tr td input[type="radio"]', function() {
    var currentTr = jQuery(this).parents('tr');
    if (currentTr.length) {
      var activeElements = currentTr.find('input:radio:checked');
      if (activeElements.length) {
        currentTr.css('background', 'black');
      } else {
        currentTr.css('background', 'white');
      }
    }
  });
});

Это если для всей строки. Ну и если для каждой ячейки отдельно – через find по аналогии. А еще лучше – забудь про jQuery :)

P.S.: ну и если нужно именно по клику + элементу класса – замени событие change на click и table tbody ... element.class||[attr=«value»] по вкусу.

znenyegvkby
()
Последнее исправление: znenyegvkby (всего исправлений: 1)
Ответ на: комментарий от nikolnik

Мне бы с куери разобраться.

cinyflo ★★★★★
() автор топика

Оранжевые плашки-подсветки у параметров оставить только у активного в данный момент ряда, остальные плашки сделать серыми или вообще без подсветки. http://www.screencast.com/t/eh4UHuvbf

То бишь когда кликаю по одному ряду остальные «обесцвечиваются».

cinyflo ★★★★★
() автор топика
Последнее исправление: cinyflo (всего исправлений: 1)
Ответ на: комментарий от cinyflo

То бишь когда кликаю по одному ряду остальные «обесцвечиваются».

Ну дак в чем проблема? Устанавливай любые css-свойства _всем_ элементам, кроме текущего.

znenyegvkby
()
Ответ на: Так? от cinyflo

О господи, ну там немного ты тактов процессора-то сэкономишь. У меня тоже not(this) через раз работает (FF 49.0). Ну дай ты всем, потом this исключи:

http://codepen.io/anon/pen/oYmvQK

znenyegvkby
()
Ответ на: jQuery ненужно от h578b1bde

Свойство checked не отображается обратно на атрибут. Ненадёжно. Лучше сразу искать cool:checked.

anonymous
()
Ответ на: комментарий от anonymous

// Ну или проверять свойство, да.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.