| 
	| 
	
	| 
		
	| 
			
			 
			
				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,298
					 
		
 |  |  
	| 
	
 
	| Сообщение от 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,841
					 
		
 |  |  
	| Или так. 
<!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,150
					 
		
 |  |  
	| 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,841
					 
		
 |  |  
	| 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,298
					 
		
 |  |  
	| 
	
 
	| Сообщение от Nexus |  
	| украл у вас html-код, надеюсь вы не против |  
	
 Пользуйся...   |  |  
	| 
		
	| 
			
			 
			
				12.10.2017, 10:41
			
			
			
		 |  
	| 
		
			|  | CacheVar       |  | 
					Регистрация: 19.08.2010 
						Сообщений: 14,298
					 
		
 |  |  
	| 
	
 
	| Сообщение от artem55555p |  
	| а это как сделать тогда? |  
	
 Не стоит так менять ЦСС у элементов.    
Лучший вариант - объявить их все как "выключенные" и сделать отдельно класс как "включенный"... А потом просто убирать тот класс у элементов и присваивать нужному элементу.   |  |  |  |