Показать сообщение отдельно
  #1 (permalink)  
Старый 08.10.2016, 21:46
Аватар для Black_Star
Профессор
Отправить личное сообщение для Black_Star Посмотреть профиль Найти все сообщения от Black_Star
 
Регистрация: 11.07.2016
Сообщений: 300

Выборка и оптимизация кода
Добрый день, уважаемые, помогите разобраться с правильной постановкой выборки. Есть необходимость разобраться как правильно закодить отображение/срывание DOM элементов на простом примере.

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<link rel="stylesheet" type="text/css" href="style.css">
	 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
</head>
<body>
	<div id="main">

		<div id="sidebarBox" >
		<ul>
			<li id="button1">Заголовок 1</li>
			<li id="button2">Заголовок 2</li>
			<li id="button3">Заголовок 3</li>
			<li id="button4">Заголовок 4</li>
			<li id="button5">Заголовок 5</li>
		</ul>

		</div>

		<div id="mainPicture"> Picture</div>	


		<div id="contextBoxing">
			<div id="button1_Context1">Context1</div>
			<div id="button2_Context2">Context2</div>
			<div id="button3_Context3">Context3</div>
			<div id="button4_Context4">Context4</div>
			<div id="button5_Context5">Context5</div>
		</div>
	</div>
</body>
<script type="text/javascript" src='script.js'></script>
</html>


CSS

#main {
	position: relative;
	width: 800px;
	height: 500px;
	background-color: gold;
}


#sidebarBox {
	float: left;
	margin: 1%;
	font-size: 2em;	
	cursor: pointer;
}

#sidebarBox li {
	background-color: red; 
	width: 100%;	
    list-style-type: none;
	border: 1px solid black;
	margin: 1%;
	padding: 1%;

}


#mainPicture,
#button1_Context1,
#button2_Context2,
#button3_Context3,
#button4_Context4,
#button5_Context5 {
	float: left;
	margin: 10%;
	width: 300px;
	height: 300px;
	background-color: pink;

	font-size: 3em;
	text-align: center;
	
	border: 1px solid black;


}

#button1_Context1 {

	background-color: orange;
	display: none;
}

#button2_Context2 {

	background-color: green;
	display: none;
}
#button3_Context3 {

	background-color: lightblue;
	display: none;
}

#button4_Context4 {

	background-color: blue;
	display: none;
}

#button5_Context5 {

	background-color: purple;
	display: none;
}

#sidebarBox li:hover{
	background-color: lightgreen;
}


JS
window.onload = function() {

    var $button1 = $('#button1'),   
        $button2 = $('#button2'),
        $button3 = $('#button3'),
        $button4 = $('#button4'),
        $button5 = $('#button5'),

        $Context1 = $('#button1_Context1'),   
        $Context2 = $('#button2_Context2'),
        $Context3 = $('#button3_Context3'),
        $Context4 = $('#button4_Context4'),
        $Context5 = $('#button5_Context5');

     var fullContext = [$Context1, $Context2, $Context3, $Context4, $Context5];  // Можно ли так, через один элемент, вызвать каждый элемент из множества ?  

     function showChapter(button, chapter) {
     


        button.on( "click", function() {


            $('#mainPicture').hide();    

            chapter.toggle();


            if (chapter.show()) {fullContext.hide()}
                else {$('#mainPicture').show(); } // С этим у меня большие вопросы

});

 

}


showChapter($button1, $Context1);
showChapter($button2, $Context2);
showChapter($button3, $Context3);
showChapter($button4, $Context4);
showChapter($button5, $Context5);

}


https://jsfiddle.net/BlackStar1991/9vpeapta/

Вопрос в следующем - как сделать правильно выборку элементов что б при условии что хотя бы один $Context show(), все остальные скрыты, а если и он скрыт, то отображается #mainPicture.
Я попробывал через if (chapter.show()) {fullContext (тут должно за исключениемchapter) .hide()}
else {$('#mainPicture').show(); }
Не могу понять, помогите советом???
Ответить с цитированием