выделение чекбоксом родителя

Тема в разделе "JavaScript", создана пользователем danneo, 3 дек 2013.

Модераторы: ZiX
  1. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.445
    Симпатии:
    113
    Есть древовидное меню (список названий категорий), с чекбоксами. Пока оно только визуально древовидное (CSS).
    Нужно сделать так, чтобы при выделении списка из меню, выделялись все родители по цепочке в верх (только родители). Я так понимаю, для моей цели нужно вывести во вложенных ul...
    Подскажите, пожалуйста.
    Как нужно сформировать этот список? Какой код js (можно jquery)?
     
    Последнее редактирование: 3 дек 2013
  2. Aserus

    Aserus Постоялец

    Регистр.:
    16 ноя 2013
    Сообщения:
    78
    Симпатии:
    4
    без разницы как ты оформишь, главное чтобы список был именно вложенным, а уж div или ul - пофиг. Чтобы получить родителя используй функция .parent()
     
  3. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.445
    Симпатии:
    113
    дак у <input type="checkbox" /> нет родителя...
     
  4. Aserus

    Aserus Постоялец

    Регистр.:
    16 ноя 2013
    Сообщения:
    78
    Симпатии:
    4
    Как вариант ты можешь каждому чек боксу прописать аттрибуте id родителя
    а при клике, получать id и по нему находить родителя, выделять и получать уже у него id и опять искать его родителя и тд...

    еще один вариант - перебирать.
    они же у тебя хотя бы классами обозначены?


    при клике получаешь индекс чекбокса в списке. В переменную запихиваешь класс текущего элемента. И перебираешь элементы с конца начинаю с этого элемента.
    и сравниваешь классы если класс текущего такой же как и в переменно то идем дальше, если нет то это родитель - тогда записываем его класс в переменную и перебираем дальше...
     
    Последнее редактирование модератором: 31 дек 2013
  5. vipTelnet

    vipTelnet Постоялец

    Регистр.:
    14 янв 2013
    Сообщения:
    134
    Симпатии:
    11
  6. max1235

    max1235 Создатель

    Регистр.:
    28 дек 2013
    Сообщения:
    15
    Симпатии:
    0
    $("#block").parent()вернет родителя элемента с идентификатором block.
    $("div").parent()вернет родительские элементы всех div-ов.
    $("div").parent(".lBlock")вернет элементы класса lBlock, которые являются родительскими для div-элементов на странице.
     
  7. rebbort

    rebbort Писатель

    Регистр.:
    8 янв 2014
    Сообщения:
    7
    Симпатии:
    1
    Либо через дополнительный атрибут, как было сказано выше, например: <input type="checkbox" id="c20" rel="c19" /> и тогда:
    Код:
    var ch = this; //ссылка на checkbox
    while(1){
    var parent = $(ch).attr('rel');
    if(!parent) break;
    ch = $('#'+parent).attr('checked','checked');
    }
    Или через вложенные списки ul li и выделение родительских чекбоксов через $("div").parent().
     
    metal-stroi-komplekt нравится это.