Спасибо, что посмотрели. Я пытаюсь использовать методы jQ UI addClass / remove Class, чтобы развернуть элемент hr при нажатии на предыдущие одноуровневые div. Ядро эффектов пользовательского интерфейса jQ обеспечивает плавный анимированный переход между двумя классами: http://jqueryui.com/demos/removeClass/ а>. Кроме того, hr необходимо динамически добавлять с помощью $, чтобы добиться более широкого дизайна сайта.
Вот кусочки головоломки:
- Мой код отображает строки из четырех одноуровневых div размером 100x100 пикселей. У этих div нет классов, но СВОБОДНО ДОБАВЛЯЙТЕ ИХ, ЕСЛИ ЭТО ПОМОЖЕТ - каждый div в конечном итоге будет иметь уникальный класс. После каждого 4-го div динамически добавляется hr.
- При щелчке по любому заданному элементу div, следующий сразу же hr должен переключиться на класс «open», что приведет к расширению строки. Если затем щелкнуть этот div еще раз, он должен переключить / удалить класс «open» из hr, в результате чего hr сжимается до исходного размера.
- Если щелкнуть один div, чтобы развернуть hr, а затем щелкнуть другой div, должны быть запущены две анимации: сначала должен быть удален "открытый" класс, в результате чего строка снова уменьшится, и ЗАТЕМ класс необходимо повторно добавить чтобы снова открыть строку. Однако, если, например, щелкнули div, чтобы открыть вторую строку, а затем щелкнули второй div, предшествующий первому hr, это действие должно сначала закрыть второй hr, а затем открыть соответствующий hr второго div.
Я застрял. Я пробовал несколько комбинаций функций jQ, но результаты ужасны. То, что вы видите, является самым близким, что я получил. Спасибо, что дали шанс этому. Не стесняйтесь добавлять в код, но вы можете заставить это работать.
<!--HTML...the children divs of ".main" can have their own unique classes if that helps-->
<div class="main">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
/*CSS-some of this creates other events not mentioned above. These are simplified versions of what I need for my final site design*/
.main {
width: 450px;
}
.main div {
height: 100px;
width: 100px;
background-color: #000;
margin: 3px;
float:left;
}
div.select {
background-color: #f00;
border: 2px solid #00F;
margin: 3px;
float:left;
display: block;
}
div.active {
background-color: #f00;
margin: 3px;
float:left;
display: block;
}
hr {
background-color: #FF0;
float: left;
display: block;
height: 20px;
width: 450px;
}
hr.open {
float: left;
display: block;
height: 300px;
width: 450px;
}
/*the JS - sorry about the double quotes. I'm using Dreamweaver, which seems to add them to everything*/
$(document).ready(function() {
//dynamcally adds the <hr> after every 4th div.
$(".main div:nth-child(4n)").after('<hr class="closed"></hr>');
//puts a blue border on the squares
$('.main div').hover(function() {
$(this).addClass('select');
},
function() {
$(this).removeClass('select')
});
//changes the color of the active square to red and "deactivates" the previous one.
$('.main div').click(function() {
$(this).toggleClass('active').siblings().removeClass('active');
});
//here in lies the problem...???
$('.main div').click(function() {
$('hr').removeClass('open', 1000);
$(this).toggle
(function() {
$(this).nextAll("hr").first().addClass('open', 500);
},
function() {
$(this).nextAll("hr").first().removeClass('open', 500)
});
});
});
display: block
. Я действительно чувствую, что стилизация HR не так хорошо поддерживается во многих браузерах и может легко стать корнем вашей проблемы, но я должен признать, что прошло много времени с тех пор, как я смотрел на использование таких HR. - person Patrick M   schedule 19.09.2012