Оптимизировать скрипт (сделать лучше)
Здравствуйте. Вот скрипт:
$('.tb2').click(function(){ $('.tb1_1').css('display','none'); $('.tb1_2').css('display','block'); $('.tb1_3').css('display','none'); }); $('.tb3').click(function(){ $('.tb1_1').css('display','none'); $('.tb1_2').css('display','none'); $('.tb1_3').css('display','block'); }); $('.tb1').click(function(){ $('.tb1_1').css('display','block'); $('.tb1_2').css('display','none'); $('.tb1_3').css('display','none'); }); я сам понимаю, что это говнокод((( <ul class="ul_tabs"> <li><button class="tb1">Матовые потолки</button></li> <li><button class="tb2">Глянцевые потолки</button></li> <li><button class="tb3">Потолки с фотопечатью</button></li> </ul> <div class="tb1_1">первое</div> <div class="tb1_2">второе</div> <div class="tb1_3">третье</div> как сделать короче?) может флаг какойто сделать.... |
Цитата:
<!DOCTYPE html> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=windows-1251' /> <script src='https://code.jquery.com/jquery-latest.js'></script> <!-- <script src="https://code.angularjs.org/1.3.9/angular.min.js"></script> <script src="https://code.angularjs.org/1.3.9/angular-route.js"></script> --> <style type='text/css'> </style> <script type='text/javascript'> $(function(){ $('.ul_tabs button').click(function(){ var n=this.className.match(/\d+$/); $('.case > div').hide(); $('.tb1_'+n).show(); }); }); </script> </head> <body> <ul class="ul_tabs"> <li><button class="tb1">Матовые потолки</button></li> <li><button class="tb2">Глянцевые потолки</button></li> <li><button class="tb3">Потолки с фотопечатью</button></li> </ul> <div class='case'> <div class="tb1_1">первое</div> <div class="tb1_2">второе</div> <div class="tb1_3">третье</div> </div> </body> </html> |
Или так.
<!DOCTYPE html> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=windows-1251' /> <script src='https://code.jquery.com/jquery-latest.js'></script> <!-- <script src="https://code.angularjs.org/1.3.9/angular.min.js"></script> <script src="https://code.angularjs.org/1.3.9/angular-route.js"></script> --> <style type='text/css'> </style> <script type='text/javascript'> $(function(){ $('.ul_tabs button').click(function(){ $('[class*="tb1_"]').hide().filter('.tb1_'+$(this) .attr('class').split(' ').filter(function(val){ return val.indexOf('tb')>-1; }).toString().replace(/\D+?/g,'')).show(); }); }); </script> </head> <body> <ul class="ul_tabs"> <li><button class="tb1">Матовые потолки</button></li> <li><button class="tb2">Глянцевые потолки</button></li> <li><button class="tb3">Потолки с фотопечатью</button></li> </ul> <div class='case'> <div class="tb1_1">первое</div> <div class="tb1_2">второе</div> <div class="tb1_3">третье</div> </div> </body> </html> ksa, украл у вас html-код, надеюсь вы не против. |
не работает так...
|
|
$('.tb2').click(function(){ $('.tb1_1').css('display','none'); $('.tb1_2').css({display: 'block'}); $('.tb1_3').css('display','none'); $('.tb2').css({background: '#ff0000', color: '#fff'}); $('.tb1').css({background: 'transparent', color: '#7f7f7f'}); $('.tb3').css({background: 'transparent', color: '#7f7f7f'}); }); $('.tb3').click(function(){ $('.tb1_1').css('display','none'); $('.tb1_2').css('display','none'); $('.tb1_3').css('display','block'); $('.tb3').css({background: '#ff0000', color: '#fff'}); $('.tb1').css({background: 'transparent', color: '#7f7f7f'}); $('.tb2').css({background: 'transparent', color: '#7f7f7f'}); }); $('.tb1').click(function(){ $('.tb1_1').css('display','block'); $('.tb1_2').css('display','none'); $('.tb1_3').css('display','none'); $('.tb1').css({background: '#ff0000', color: '#fff'}); $('.tb2').css({background: 'transparent', color: '#7f7f7f'}); $('.tb3').css({background: 'transparent', color: '#7f7f7f'}); }); а это как сделать тогда?))) |
artem55555p, и так шикарно, зачем что-то изменять?
<!DOCTYPE html> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=windows-1251' /> <script src='https://code.jquery.com/jquery-latest.js'></script> <!-- <script src="https://code.angularjs.org/1.3.9/angular.min.js"></script> <script src="https://code.angularjs.org/1.3.9/angular-route.js"></script> --> <style type='text/css'> </style> <script type='text/javascript'> $(function(){ var css={ show:{ display:'block', background:'#F00', color:'#FFF' }, hide:{ display:'none', background:'transparent', color:'#7F7F7F' } }; $('.ul_tabs button').click(function(){ $('[class*="tb1_"]').css(css.hide).filter('.tb1_'+$(this) .attr('class').split(' ').filter(function(val){ return val.indexOf('tb')>-1; }).toString().replace(/\D+?/g,'')).css(css.show); }); }); </script> </head> <body> <ul class="ul_tabs"> <li><button class="tb1">Матовые потолки</button></li> <li><button class="tb2">Глянцевые потолки</button></li> <li><button class="tb3">Потолки с фотопечатью</button></li> </ul> <div class='case'> <div class="tb1_1">первое</div> <div class="tb1_2">второе</div> <div class="tb1_3">третье</div> </div> </body> </html> |
это сарказм?))) плохой тон копипастить строки же)
|
Цитата:
|
Цитата:
Лучший вариант - объявить их все как "выключенные" и сделать отдельно класс как "включенный"... А потом просто убирать тот класс у элементов и присваивать нужному элементу. ;) |
Часовой пояс GMT +3, время: 01:40. |