Смена стиля "вышестоящего" элемента
Кастомизирую меню, в компоненту его создающую лезть не хотелось бы, помогите пожалуйста на JS изменить стиль первого элемента <div class="parent"> НАД элементом <div class="child_current">?
т.е. сейчас при активном пункте подменю исходник такой: <div class="parent"><a href="#">1</a></div> <div class="parent"><a href="#">2</a></div> <div class="parent"><a href="#">3</a></div> <div class="parent"><a href="#">4</a></div> <div class="parent"><a href="#">5</a></div> <div class="child"><a href="#">5.1</a></div> <div class="child_current"><a href="#">5.2</a></div> <div class="child"><a href="#">5.3</a></div> <div class="parent"><a href="#">6</a></div> <div class="parent"><a href="#">7</a></div> а хочется такой: <div class="parent"><a href="#">1</a></div> <div class="parent"><a href="#">2</a></div> <div class="parent"><a href="#">3</a></div> <div class="parent"><a href="#">4</a></div> <div class="parent_current"><a href="#">5</a></div> <div class="child"><a href="#">5.1</a></div> <div class="child_current"><a href="#">5.2</a></div> <div class="child"><a href="#">5.3</a></div> <div class="parent"><a href="#">6</a></div> <div class="parent"><a href="#">7</a></div> |
Цитата:
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
.parent {
}
.parent_current {
border: 1px solid red;
}
.child_current {
border: 1px solid green;
}
</style>
<script type="text/javascript">
function Go() {
var o=document.getElementsByTagName('div')
var i,oset
for (i=0; i<o.length; i++) {
if ((o[i].className=='parent')||(o[i].className=='parent_current')) {
oset=o[i]
}
if (o[i].className=='child_current') {
break
}
}
if (oset) {
oset.className='parent_current'
}
}
</script>
</head>
<body>
<div class="parent"><a href="#">1</a></div>
<div class="parent"><a href="#">2</a></div>
<div class="parent"><a href="#">3</a></div>
<div class="parent"><a href="#">4</a></div>
<div class="parent"><a href="#">5</a></div>
<div class="child"><a href="#">5.1</a></div>
<div class="child_current"><a href="#">5.2</a></div>
<div class="child"><a href="#">5.3</a></div>
<div class="parent"><a href="#">6</a></div>
<div class="parent"><a href="#">7</a></div>
<input type='button' value='Go' onclick='Go()' />
</body>
</html>
|
Огромное спасибо!!!
|
Вариант на jquery
<!DOCTYPE html >
<html>
<head>
<title></title>
<style type="text/css">
.parent {
}
.parent_current {
border: 1px solid red;
}
.child_current {
border: 1px solid green;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<script type="text/javascript">
$(function() {
$(":button").click(function() {$("div.child_current").prevAll('.parent:first').toggleClass('parent_current'); })
});
</script>
</head>
<body>
<div class="parent"><a href="#">1</a></div>
<div class="parent"><a href="#">2</a></div>
<div class="parent"><a href="#">3</a></div>
<div class="parent"><a href="#">4</a></div>
<div class="parent"><a href="#">5</a></div>
<div class="child"><a href="#">5.1</a></div>
<div class="child_current"><a href="#">5.2</a></div>
<div class="child"><a href="#">5.3</a></div>
<div class="parent"><a href="#">6</a></div>
<div class="parent"><a href="#">7</a></div>
<input type='button' value='Go' onclick='Go()' />
</body>
</html>
|
рони, спасибо! Но почему-то класс не меняется, а добавляется (т.е. становится не "parent_current" а "parent parent_current". Как победить?
|
anycall,
$(function() {
$(":button").click(function() {$("div.child_current").prevAll('.parent:first').removeClass().addClass('parent_current'); })
});
|
рони,
нижайший поклон! Спасибо! |
| Часовой пояс GMT +3, время: 21:36. |