рони,
у меня получилось сделать, то что нужно с помощью открыть закрыть открывашка на js:dance: :dance: но только теперь когда я из выпадающего списка выбираю длину, то название строчки не переноситься в название списка, и список не закрывается автоматически при нажатие на тег "li" Вот весь код: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Пример</title> <meta name="robots" content="noindex,nofollow"> <!-- Bootstrap --> <link href="css/bootstrap.min.css" rel="stylesheet"> <!-- Bootstrap --> <link href="css/animate.css" rel="stylesheet"> <!-- Google Font Lato --> <link href="http://fonts.googleapis.com/css?family=Lato:400,700,900,400italic,700italic,900italic" rel="stylesheet" type="text/css"> <link rel="stylesheet" href="fonts/Raleway-ExtraLight.ttf" type="text/css"> <!-- Main Styles --> <link href="css/styles.css" rel="stylesheet"> <link rel="shortcut icon" href="img/ico/favicon.png"> </head> <body id="top" data-spy="scroll" data-target=".navbar" data-offset="260"> <!-- Vehicles start --> <form action="#"> <section id="vehicles" class="container"> <div class="col-md-12"> <h2 class="title wow fadeInDown" data-wow-offset="200">Выбор стеллажа<span class="subtitle"></span></h2> <div id="radio"> <div class="radio_pos"> <input checked="checked" class="radio" id="radio-1" name="sw" type="radio" value="one"> <label style="" for="radio-1">Односторонний</label> <br><br> <input style="" class="radio" id="radio-2" name="sw" type="radio"> <label style="" for="radio-2">Двухсторонний</label> </div> </div> </div> <!-- Vehicle 1str start --> <div id="one" class="row"> <div class="col-md-3 vehicle-nav-row wow fadeInUp" data-wow-offset="100"> <div id="vehicle-nav-container"> <div id="length" class="wrapper-dropdown-3" tabindex="1"> <span>Длина</span> <ul class="vehicle-nav"> <input id="1str1metr" type="radio" class="lenght" value="one" name="length" checked="checked"> <label for="1str1metr"> <li class="active"> <a onclick="_click(1); return false;"><i class="icon-envelope icon-large"></i>1 метр</a> </li> </label> <input id="1str2metra" type="radio" class="lenght" value="one" name="length"> <label for="1str2metra"> <li class="active"> <a onclick="_click(2); return false;"><i class="icon-envelope icon-large"></i>2 метра</a> </li> </label> <input id="1str3metra" type="radio" class="lenght" value="one" name="length"> <label for="1str2metra"> <li class="active"> <a onclick="_click(3); return false;"><i class="icon-envelope icon-large"></i>3 метра</a> </li> </label> </ul> </div> </div> </div> <!-- Vehicle 1str end --> <script type="text/javascript"> function DropDown(el) { this.dd = el; this.placeholder = this.dd.children('span'); this.opts = this.dd.find('ul.vehicle-nav > .op input[type="radio"] + label li'); this.val = ''; this.index = -1; this.initEvents(); } DropDown.prototype = { initEvents : function() { var obj = this; obj.dd.on('click', function(event){ $(this).toggleClass('active'); return false; }); obj.opts.on('click',function(){ var opt = $(this); obj.val = opt.text(); obj.index = opt.index(); obj.placeholder.text(obj.val); $('.wrapper-dropdown-3').removeClass('active'); obj.index = opt.index(); }); }, getValue : function() { return this.val; }, getIndex : function() { return this.index; } } $(function() { var dd = new DropDown( $('#length') ); var dd = new DropDown( $('#metr') ); $(document).click(function() { // all dropdowns $('<div class="wrapper-dropdown-3"></div>').removeClass('active'); }); }); $(document).ready(function(){ $('input[name=sw]').click(function(){ var v = ($(this).val()); console.log(v); if(v === 'one'){ $('#one').show(); $('#two').hide(); } else{ $('#one').hide(); $('#two').show(); } }); }); var _click = function () { var b = 1; return function (c) { var a = document.getElementById("vehicle-" + b); c == b && (a.style.display = "none" == a.style.display ? "" : "none"); c != b && (a.style.display = "none", a = document.getElementById("vehicle-" + c), a.style.display = "", b = c) } }(); window.onload = function() { _click(1) } </script> Сам список выпадающий строки 46-66, а код js для него 02-41. |
d1mka21,
пас ... либо попробуйте локализовать ... html 10-20 строк 3 радио 3 элемента |
Цитата:
|
открывашка 237 radio jquery
d1mka21,
это вот как-то так :) <!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> </style> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script> $(function() { var a = $(".lenght"), c = $(".vehicle"); a.each(function(a, b) { $(b).click(function() { c.hide().eq(a).show() }); b.checked && b.click() }) }); </script> </head> <body> <input type="radio" class="lenght" name="length" checked="checked"> <input type="radio" class="lenght" name="length"> <input type="radio" class="lenght" name="length"> <div class="vehicle">1</div> <div class="vehicle">2</div> <div class="vehicle">3</div> </body> </html> |
рони,
как то так не получается, там много всего надо скидывать)) может так получиться у меня объяснить, в чем проблема: вот кусок js отвечающий за замену при нажатии на выбранное событие. function DropDown(el) { this.dd = el; this.placeholder = this.dd.children('span'); this.opts = this.dd.find('ul.vehicle-nav > .op input[type="radio"] + label li'); this.val = ''; this.index = -1; this.initEvents(); } DropDown.prototype = { initEvents : function() { var obj = this; obj.dd.on('click', function(event){ $(this).toggleClass('active'); return false; }); obj.opts.on('click',function(){ var opt = $(this); obj.val = opt.text(); obj.index = opt.index(); obj.placeholder.text(obj.val); $('.wrapper-dropdown-3').removeClass('active'); obj.index = opt.index(); }); }, getValue : function() { return this.val; }, getIndex : function() { return this.index; } } но когда я добавил в js открывашку var _click = function () { var b = 1; return function (c) { var a = document.getElementById("vehicle-" + b); c == b && (a.style.display = "none" == a.style.display ? "" : "none"); c != b && (a.style.display = "none", a = document.getElementById("vehicle-" + c), a.style.display = "", b = c) } }(); window.onload = function() { _click(1) } то перестала работать замена выбранного события. Может какой то конфликт?!) |
d1mka21,
попробуйте адаптировать код выше, если вы правильно описали алгоритм вам достаточно указать правильные селекторы для кнопок и блоков и возможно заменить клик на change. разбирать зависимости конфликта ваших скриптов и код вашего html нет возможности. |
Ну вроде бы получилось))) СПАСИБО!!!!
Единственное, что при загрузке ничего не отображается, а начинает отображаться только после выбора кнопки( Но это появилось, когда я добавил второй список с кнопками, так что сейчас на подобии первого буду городить совой огород)))) Еще раз огромной СПАСИБО!!!! |
d1mka21,
если меняли клик на change смените в двух местах даже лучше так b.checked && $(b).change() |
рони,
у меня получилось адаптировать под свои нужды код вот такого плана, но два таких же кода, ток другие классы кроме ".vehicle-data" - уже не работает, один из них: $(".vehicle-data").hide(); var activeVehicleData = $(".vehicle-nav .active a").attr("href"); $(activeVehicleData).show(); $(".vehicle-nav li").on("click", function(){ $(".vehicle-nav .active").removeClass("active"); $(this).addClass('active'); $(activeVehicleData).fadeOut( "slow", function() { activeVehicleData = $(".vehicle-nav .active a").attr("href"); $(activeVehicleData).fadeIn("slow", function() {}); }); return false; }); И блин, даже второй выпадающими списками такая же фигня(( |
Часовой пояс GMT +3, время: 14:29. |