Если кому то понадобиться, сделал, не знаю по "фен-шую" ли, но как то так
var checkboxMemberView=$('.society_member_block_1 span.niceCheck'); var checkboxMemberAdd=$('.society_member_block_2 > div > div > div > span'); var checkboxSub=$('.society_subscriber > div > div > div > span'); var checkboxGuest=$('.society_not_member > div > div > div > span'); checkboxMemberView.live('click', function(){ $(this).each(function(){ var eqEl=checkboxMemberView.index($(this)); console.log(eqEl); if($(this).find('input').is(':checked')){ checkboxMemberAdd.eq(eqEl).removeAttr('class').css("background-position","0 0").attr('class','niceCheck'); checkboxSub.eq(eqEl).removeAttr('class').css("background-position","0 0").attr('class','niceCheck'); }else{ checkboxMemberAdd.eq(eqEl).removeAttr('class').removeAttr('style').attr('class','niceCheck_dis'); checkboxMemberAdd.eq(eqEl).find('input').removeAttr('checked').val(0); checkboxSub.eq(eqEl).removeAttr('class').removeAttr('style').attr('class','niceCheck_dis'); checkboxSub.eq(eqEl).find('input').removeAttr('checked').val(0); checkboxGuest.eq(eqEl).removeAttr('class').removeAttr('style').attr('class','niceCheck_dis'); checkboxGuest.eq(eqEl).find('input').removeAttr('checked').val(0); } }) }) checkboxSub.live('click', function(){ $(this).each(function(){ var eqEl=checkboxSub.index($(this)); console.log(eqEl); if($(this).find('input').is(':checked')){ checkboxGuest.eq(eqEl).removeAttr('class').css("background-position","0 0").attr('class','niceCheck'); }else{ checkboxGuest.eq(eqEl).removeAttr('class').removeAttr('style').attr('class','niceCheck_dis'); checkboxGuest.eq(eqEl).find('input').removeAttr('checked').val(0); } }) }) |
Цитата:
|
Цитата:
|
Цитата:
Ты мой пример выше смотрел? |
Цитата:
|
angek,
Ежли без оптимизации и то можно и с закрытыми span <!DOCTYPE HTML> <html> <head> <meta name="keywords" content="" /> <meta name="description" content="" /> <meta name="author" content="fergie" /> <title>Сообщество создать</title> <link rel="stylesheet" type="text/css" href="css/style.css"/> <link rel="stylesheet" type="text/css" href="css/reset.css"/> <!--[if lte IE 8]> <link rel="stylesheet" href="css/ie.css" type="text/css" /> <![endif]--> <script type="text/javascript" src="js/jquery-1.7.2.min.js"></script> <style> /*Новый класс для установки отобр. галки на span*/ .niceCheck.checked{ background-position:0 -13px; } </style> <script> (function (){ $(document).ready(function(){ //Установка/cнятие класса у span.niceCheck и checked в checkbox; function set_unsetChecked(elem,val){ var checkbox = elem.find('input[type="checkbox"]'); if(val){ checkbox.attr('checked',true);elem.addClass('checked');//alert(elem.attr('class')) } else {checkbox.removeAttr('checked');elem.removeClass('checked');} } //Cкрытие/показ полей отмеченных checkbox; function setUnlock(wrpClass){//alert('wrpClass='+wrpClass) var st=+wrpClass[1].slice(6); if(st!=1){ //Исключаем влияние "Открыть доступ к добавлению:" st++; if(st>wrpDivL) return; for(var i=st;i<wrpDivL;i++){ if(!wrpClass[3]){$('div.'+wrpClass[2]+'.prior_'+i).hide();continue;} var prevCheck = $('div.'+wrpClass[2]+'.prior_'+(i-1)+':visible'); //Виден ли предыдущий соответствующий чекбокс ? if(i==2)prevCheck = $('div.'+wrpClass[2]+'.prior_0:visible'); //Исключаем влияние "Открыть доступ к добавлению:" var Check = !!prevCheck.find('span.niceCheck input[type="checkbox"]').attr('checked'); //Включен ли предыдущий соответствующий чекбокс ? if(prevCheck.length&&Check)$('div.'+wrpClass[2]+'.prior_'+i).show(); } } } //Установка классов в div.checkbox_1, согласно установочным приоритетам; var CheckArray = $('div.thefield_8 span.niceCheck input[type="checkbox"]'); var Leng = $('div.thefield_8:first span.niceCheck input[type="checkbox"]').length; var wrpDivL; CheckArray.each(function(ind){ CheckClassIndex ='prior_'+parseInt(ind/Leng)+ ' check-' + (ind % Leng); $(this).parents('div.checkbox_1').addClass(CheckClassIndex) wrpDivL = parseInt(ind/Leng)+1; }); //Установка исходного отображения страницы, согласно чекбоксам (function (){ var arrcheck = $('div.checkbox_1 span.niceCheck input[type="checkbox"]'); var arrLng = arrcheck.length; for(var i=0;i<arrLng;i++){//alert(i) var elem =$('.checkbox_1.prior_'+parseInt(i/Leng)+'.check-'+(i % Leng)).find('span.niceCheck input[type="checkbox"]'); var val = !!elem.attr('checked'); if(val)elem.parent().addClass('checked'); var wrpClass =['checkbox_1','prior_'+parseInt(i/Leng),'check-'+(i % Leng),val]; setUnlock(wrpClass); } })(); //Onclick по span.niceCheck; $('span.niceCheck').on('click',function(){//alert('span.niceCheck'); var val=true;if($(this).hasClass('checked'))val=false; set_unsetChecked($(this),val); //Устанавливаем галки и checked/(none checked) в checkbox; var wrpClass = $(this).parents('.checkbox_1').attr('class').split(/\s+/g); wrpClass.push(val);setUnlock(wrpClass); //Устанавливаем видимость последующих чекбоксов; return false; }); }); })(); </script> </head> <body > <div class="main novosti"> <h2>Создание сообщества</h2> <div class="create_society"> <input type="text" placeholder="Название"/> <div class="fieldwrapper_16"> <label>Добавить аватар:</label> <div class="thefield_17"> <input type="file" class="file_input" size="83" /> <div class="mask"> <input type="text" class="file_input_text" placeholder="Выбрать фотографию"/> </div> </div> </div> <div class="society_avatar_choose"><img src="img/society_logo.png" width="120" height="120" /> <a class="society_delete_avatar"></a> </div> <textarea placeholder="Описание сообщества"></textarea> <div class="society_unit_top"> <h4>Участник сообщества</h4> <div class="society_member_block_1"> <div class="fieldwrapper_7"> <label>Открыть доступ к просмотру:</label> <div class="thefield_8"> <div class="checkbox_1"><span class="niceCheck"> <input type="checkbox" checked="checked"/> </span>Пост</div> <div class="checkbox_1"><span class="niceCheck"> <input type="checkbox" checked="checked"/> </span>Фотографии</div> <div class="checkbox_1"><span class="niceCheck"> <input type="checkbox" /> </span>Видеозаписи</div> </div> </div> </div> <div class="society_member_block_2"> <div class="fieldwrapper_7"> <label>Открыть доступ к добавлению:</label> <div class="thefield_8"> <div class="checkbox_1"><span class="niceCheck"> <input type="checkbox" checked="checked"/> </span>Пост</div> <div class="checkbox_1"><span class="niceCheck"> <input type="checkbox" checked="checked"/> </span>Фотографии</div> <div class="checkbox_1"><span class="niceCheck"> <input type="checkbox" /> </span>Видеозаписи</div> </div> </div> </div> </div> <div class="society_unit"> <div class="society_subscriber"> <h4>Подписчик</h4> <div class="fieldwrapper_7"> <label>Открыть доступ к просмотру:</label> <div class="thefield_8"> <div class="checkbox_1"><span class="niceCheck"> <input type="checkbox" checked="checked"/> </span>Пост</div> <div class="checkbox_1"><span class="niceCheck"> <input type="checkbox" checked="checked"/> </span>Фотографии</div> <div class="checkbox_1"><span class="niceCheck"> <input type="checkbox" /> </span>Видеозаписи</div> </div> </div> </div> <div class="society_not_member"> <h4>Пользователь не состоящий в сообществе</h4> <div class="fieldwrapper_7"> <label>Открыть доступ к просмотру:</label> <div class="thefield_8"> <div class="checkbox_1"><span class="niceCheck"> <input type="checkbox"/> </span>Пост</div> <div class="checkbox_1"><span class="niceCheck"> <input type="checkbox"/> </span>Фотографии</div> <div class="checkbox_1"><span class="niceCheck"> <input type="checkbox" /> </span>Видеозаписи</div> </div> </div> </div> </div> <a href="#" class="btn_society">Создать</a> </div> </div> </div> </div> </div> </body> </html> Текущие скрипты пока убрал (*Галки с Пользователь не состоящий в сообществе лучше изначально снять(что и сделал |
Цитата:
|
Часовой пояс GMT +3, время: 11:07. |