[решено]Добавление/удаление класса элемента при наведении на родительский элемент.
Доброго времени суток, уважаемые форумчане.
Возникла проблема, так как только начал знакомcтво с JavaScript, с присвоением/удалением классов. Ситуация такая: имеется что-то типа
<div class="class1">тут текст
<a href="#" class="class2 hidden">ссылка</a>
</div>
а в css
.hidden {
display: none !important;
}
Задача заключается в том, чтобы при наведении на <div class="class1">...</div>у ссылки был удалён класс .hidden <a href="#" class="class2">ссылка</a>Соответственно, при выходе курсора за предела дива возврат на исходную. Использование jQuery категорически неуместно. Пожалуйста, помогите новичку. Заранее премногоблагодарен! P.S.просьба к модераторам, если сообщение не в той теме, перенесите в нужную пожалуйста. если дублируется - отправьте куда нужно. и вам заранее спасибо. |
|
рони, спасибо за информацию, всё предельно ясно.
|
так?
<!DOCTYPE HTML>
<html>
<head>
<style>
.show{
-webkit-transition: all 1s ease;
color:red;
opacity:1;
}
.hide{
-webkit-transition: all 1s ease;
opacity:.5;
}
</style>
</head>
<body>
<div id="hover">hover is on me</div>
<a href="#" id="hide" class="hide">hover me</a>
<script>
function hover (opt) {
opt.elem.onmouseover = ElemMouseAction;
opt.elem.onmouseout = ElemMouseAction;
function ElemMouseAction (evt) {
var related, Call;
var e = evt || event;
if(e.type == 'mouseover'){
Call = opt.over;
related = e.relatedTarget || e.fromElement;
} else {
Call = opt.out;
related = e.relatedTarget || e.toElement;
}
while (related && related != this) {
related = related.parentNode;
}
if(related == this) return;
Call.call(this, e);
}
}
var lnk = document.getElementById("hide");
hover({
elem:document.getElementById('hover'),
over:function (e) {// срабатывает при mouseover
lnk.className = "show";
},
out:function (){// срабатывает при mouseout
lnk.className = "hide";
}
});
</script>
</body>
</html>
|
<div class="class1">тут текст
<a href="#" class="class2 hidden">ссылка</a>
</div>
var a = document.getElementsByClassName('class1');
for(i=0;i<a.length;i++)
{
a[i].onmouseover = function(){remClass(1,this)};
a[i].onmouseout = function(){remClass(0,this)};
}
function remClass(a,b)
{
a ? b.getElementsByTagName('a')[0].class = 'class2' : b.getElementsByTagName('a')[0].class = 'class2 hidden';
}
|
Ruslan_xDD,
при переходе между вложенным в ссылку элементами будет происходить событие onmouseover и onmouseout |
а hover никак ? :)
|
dmitriymar, вот и я тоже не могу понять, зачем столько возни, когда есть более лёгкие способы. :)
|
| Часовой пояс GMT +3, время: 04:12. |