12.10.2017, 09:13
|
Аспирант
|
|
Регистрация: 16.04.2016
Сообщений: 74
|
|
Оптимизировать скрипт (сделать лучше)
Здравствуйте. Вот скрипт:
$('.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>
как сделать короче?) может флаг какойто сделать....
|
|
12.10.2017, 09:51
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,214
|
|
Сообщение от 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(){
$('.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>
Последний раз редактировалось ksa, 12.10.2017 в 09:58.
|
|
12.10.2017, 10:01
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
Или так.
<!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-код, надеюсь вы не против.
|
|
12.10.2017, 10:09
|
Аспирант
|
|
Регистрация: 16.04.2016
Сообщений: 74
|
|
не работает так...
|
|
12.10.2017, 10:09
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
artem55555p,
Открывашка 258
два класса, один для всех кнопок, второй для табов
|
|
12.10.2017, 10:10
|
Аспирант
|
|
Регистрация: 16.04.2016
Сообщений: 74
|
|
$('.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'});
});
а это как сделать тогда?)))
|
|
12.10.2017, 10:11
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
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>
Последний раз редактировалось Nexus, 12.10.2017 в 10:14.
|
|
12.10.2017, 10:14
|
Аспирант
|
|
Регистрация: 16.04.2016
Сообщений: 74
|
|
это сарказм?))) плохой тон копипастить строки же)
|
|
12.10.2017, 10:37
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,214
|
|
Сообщение от Nexus
|
украл у вас html-код, надеюсь вы не против
|
Пользуйся...
|
|
12.10.2017, 10:41
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,214
|
|
Сообщение от artem55555p
|
а это как сделать тогда?
|
Не стоит так менять ЦСС у элементов.
Лучший вариант - объявить их все как "выключенные" и сделать отдельно класс как "включенный"... А потом просто убирать тот класс у элементов и присваивать нужному элементу.
|
|
|
|