Изменение стиля всех одинаковых классов при наведение(клике)
Уважаемые гуру форума, нуждаюсь в Вашей помощи так так с скриптами я не алё, а вот проблемка возникла.
в общем создал я список с таблицей: <div class="class1"><img class="class1"src="1.png" title="ZZZ"/>Текст1</div><br> <div class="class2"><img class="class2"src="2.png" title="ZZZ"/>Текст2</div><br> <div class="class3"><img class="class3"src="3.png" title="ZZZ"/>Текст3</div><br> <table width="200" border="0"> <tr> <td class="k1" tabindex="0"><img class="class1" src="1.png" title="ZZZ"/></td> <td class="k2"><img class="class2"src="2.png" title="ZZZ"/></td> <td class="k1" tabindex="0"><img class="class1"src="1.png" title="ZZZ"/></td> </tr> <tr> <td class="k2"><img class="class2"src="2.png" title="ZZZ"/></td> <td class="k1" tabindex="0"><img class="class1"src="1.png" title="ZZZ"/></td> <td class="k2"><img class="class2"src="2.png" title="ZZZ"/></td> </tr> <tr> <td class="k3"><img class="class3"src="3.png" title="ZZZ"/></td> <td class="k3"><img class="class3"src="3.png" title="ZZZ"/></td> <td class="k1" tabindex="0"><img class="class1"src="1.png" title="ZZZ"/></td> </tr> </table> мне нужно чтобы при наведении, на DIVы все элементы с одинаковым с DIVом классом меняли свой стиль, а при клике на него меняли стиль и запоминали изменение. CSS .k1 { border: 2px dotted #000; border-radius: 16px 16px 16px; background:red; opacity: 0.6; } .k2 { border: 2px dotted #000; border-radius: 16px 16px 16px; background:green; opacity: 0.6; } .k3 { border: 2px dotted #000; border-radius: 16px 16px 16px; background:orange; opacity: 0.6; } .k1:focus:not(:active){ border: 2px solid #000; opacity : 1; } td:hover { opacity: 1; } нашел что то похожее, но разобраться так и не смог. $("div[class ^= 'class']").not("").click(function() { $("img[class ^= 'class']").hide() ; $("img."+$(this).attr("class")).show() ; }) ; По сути мне всего то нужно при наведении и клике поменять opacity: на 1 и border. Поможите чем могите. Пока что получается только так |
dmitriy39reg,
:write: ... строки .parent() можно убрать <!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> .k1 { border: 2px dotted #000; border-radius: 16px 16px 16px; background:red; opacity: 0.6; } .k2 { border: 2px dotted #000; border-radius: 16px 16px 16px; background:green; opacity: 0.6; } .k3 { border: 2px dotted #000; border-radius: 16px 16px 16px; background:orange; opacity: 0.6; } .k1:focus:not(:active){ border: 2px solid #000; opacity : 1; } td:hover { opacity: 1; } div{ width: 150px; cursor: pointer; } .active{ opacity: 1; border: 2px solid #000; } .active_hover{ opacity: 1; border: 2px solid #000; } </style> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script> $(function() { var cls = [".class1", ".class2", ".class3"]; $.each(cls, function(indx, clsName) { var el = $(clsName).not("div") $("div" + clsName).click(function() { el .parent() .toggleClass("active"); }).mouseenter(function() { el .parent() .addClass("active_hover"); }).mouseleave(function() { el .parent() .removeClass("active_hover"); }) }); }); </script> </head> <body><div class="class1"><img class="class1" src="http://javascript.ru/forum/images/smilies/dance3.gif" title="ZZZ"/>Текст1</div><br> <div class="class2"><img class="class2" src="http://javascript.ru/forum/images/smilies/write.gif" title="ZZZ"/>Текст2</div><br> <div class="class3"><img class="class3" src="http://javascript.ru/forum/images/smilies/victory.gif" title="ZZZ"/>Текст3</div><br> <table width="200" border="0"> <tr> <td class="k1" tabindex="0"><img class="class1" src="http://javascript.ru/forum/images/smilies/dance3.gif" title="ZZZ"/></td> <td class="k2"><img class="class2"src="http://javascript.ru/forum/images/smilies/write.gif" title="ZZZ"/></td> <td class="k1" tabindex="0"><img class="class1"src="http://javascript.ru/forum/images/smilies/dance3.gif" title="ZZZ"/></td> </tr> <tr> <td class="k2"><img class="class2"src="http://javascript.ru/forum/images/smilies/write.gif" title="ZZZ"/></td> <td class="k1" tabindex="0"><img class="class1"src="http://javascript.ru/forum/images/smilies/dance3.gif" title="ZZZ"/></td> <td class="k2"><img class="class2"src="http://javascript.ru/forum/images/smilies/write.gif" title="ZZZ"/></td> </tr> <tr> <td class="k3"><img class="class3"src="http://javascript.ru/forum/images/smilies/victory.gif" title="ZZZ"/></td> <td class="k3"><img class="class3"src="http://javascript.ru/forum/images/smilies/victory.gif" title="ZZZ"/></td> <td class="k1" tabindex="0"><img class="class1"src="http://javascript.ru/forum/images/smilies/dance3.gif" title="ZZZ"/></td> </tr> </table> </body> </html> |
Практически так как нужно получилось, завтра поковыряюсь уберу всё лишнее. Возможно ли без конкретизации класса в самом коде, просто классов планируется много? :(
|
Цитата:
$(function() { var div = $("div[class ^= 'class']"); div.each(function(indx, elem) { var el = $("."+elem.className).not(elem); $(elem).click(function() { el .parent() .toggleClass("active"); }).mouseenter(function() { el .parent() .addClass("active_hover"); }).mouseleave(function() { el .parent() .removeClass("active_hover"); }) }); }); |
:D
$(function() { $('div[class^="class"]').each(function(i, elem) { var el = $('.' + elem.className).not(elem).parent(); $(elem).click(function() { el.toggleClass('active'); }).on('mouseenter mouseleave', function() { el[e.type == 'mouseenter' ? 'addClass' : 'removeClass']('active_hover'); }); }); }); |
Ruslan_xDD,
интереснее вариант без класса 'active_hover' |
Ruslan_xDD,
6 строка нет event |
:write:
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> .k1 { border: 2px dotted #000; border-radius: 16px 16px 16px; background:red; opacity: 0.6; } .k2 { border: 2px dotted #000; border-radius: 16px 16px 16px; background:green; opacity: 0.6; } .k3 { border: 2px dotted #000; border-radius: 16px 16px 16px; background:orange; opacity: 0.6; } td:hover { opacity: 1; } div{ width: 150px; cursor: pointer; } .active{ opacity: 1; border: 2px solid #000; } </style> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script> $(function() { $('div[class^="class"]').each(function(i, elem) { var el = $('.' + elem.className).not(elem).parent(), add; $(elem).on('click mouseover mouseleave', function(e) { e.type == 'click' && (add = !add); el.toggleClass('active', add || e.type == 'mouseover') }); }); }); </script> </head> <body><div class="class1"><img class="class1" src="http://javascript.ru/forum/images/smilies/dance3.gif" title="ZZZ"/>Текст1</div><br> <div class="class2"><img class="class2" src="http://javascript.ru/forum/images/smilies/write.gif" title="ZZZ"/>Текст2</div><br> <div class="class3"><img class="class3" src="http://javascript.ru/forum/images/smilies/victory.gif" title="ZZZ"/>Текст3</div><br> <table width="200" border="0"> <tr> <td class="k1" tabindex="0"><img class="class1" src="http://javascript.ru/forum/images/smilies/dance3.gif" title="ZZZ"/></td> <td class="k2"><img class="class2"src="http://javascript.ru/forum/images/smilies/write.gif" title="ZZZ"/></td> <td class="k1" tabindex="0"><img class="class1"src="http://javascript.ru/forum/images/smilies/dance3.gif" title="ZZZ"/></td> </tr> <tr> <td class="k2"><img class="class2"src="http://javascript.ru/forum/images/smilies/write.gif" title="ZZZ"/></td> <td class="k1" tabindex="0"><img class="class1"src="http://javascript.ru/forum/images/smilies/dance3.gif" title="ZZZ"/></td> <td class="k2"><img class="class2"src="http://javascript.ru/forum/images/smilies/write.gif" title="ZZZ"/></td> </tr> <tr> <td class="k3"><img class="class3"src="http://javascript.ru/forum/images/smilies/victory.gif" title="ZZZ"/></td> <td class="k3"><img class="class3"src="http://javascript.ru/forum/images/smilies/victory.gif" title="ZZZ"/></td> <td class="k1" tabindex="0"><img class="class1"src="http://javascript.ru/forum/images/smilies/dance3.gif" title="ZZZ"/></td> </tr> </table> </body> </html> |
Спасибо большое, маленько начал разбираться.
пока что юзаю вот такой код $(function() { var div = $("div[class ^= 's']"); div.each(function(indx, elem) { var el = $("."+elem.className).not(elem); $(elem).click(function() { el .parent() .toggleClass("a"); }).mouseover(function() { el .parent("td") .addClass("ah"); }).mouseout(function() { el .parent("td") .removeClass("ah"); }) }); }); мне он более понятен, но в нём небольшая проблема со снятием выделенного в таблице, оно происходит только после того как убирается курсор с DIVа. Стиль подредактировал td{ border: 2px dotted #000; border-radius: 16px 16px 16px; opacity: 0.6; } .k1 { background:red; } .k2 { background:green; } .k3 { background:orange; } .a{ opacity: 1; border: 2px solid #000; } .ah{ opacity: 1; border: 2px solid #000; } div{ width: 100px; cursor: pointer; border: 2px dotted #000; border-radius: 16px 16px 16px; opacity: 0.7; } div:hover { opacity: 1; } Сам html <div class="s1"><img class="s1" src="http://javascript.ru/forum/images/smilies/dance3.gif" title="ZZZ"/>Текст1</div><br> <div class="s2"><img class="s2" src="http://javascript.ru/forum/images/smilies/write.gif" title="ZZZ"/>Текст2</div><br> <div class="s3"><img class="s3" src="http://javascript.ru/forum/images/smilies/victory.gif" title="ZZZ"/>Текст3</div><br> <table width="200" border="0"> <tr> <td class="k1"><img class="s1" src="http://javascript.ru/forum/images/smilies/dance3.gif" title="ZZZ"/></td> <td class="k2"><img class="s2"src="http://javascript.ru/forum/images/smilies/write.gif" title="ZZZ"/></td> <td class="k1"><img class="s1"src="http://javascript.ru/forum/images/smilies/dance3.gif" title="ZZZ"/></td> </tr> <tr> <td class="k2"><img class="s2"src="http://javascript.ru/forum/images/smilies/write.gif" title="ZZZ"/></td> <td class="k1"><img class="s1"src="http://javascript.ru/forum/images/smilies/dance3.gif" title="ZZZ"/></td> <td class="k2"><img class="s2"src="http://javascript.ru/forum/images/smilies/write.gif" title="ZZZ"/></td> </tr> <tr> <td class="k3"><img class="s3"src="http://javascript.ru/forum/images/smilies/victory.gif" title="ZZZ"/></td> <td class="k3"><img class="s3"src="http://javascript.ru/forum/images/smilies/victory.gif" title="ZZZ"/></td> <td class="k1"><img class="s1"src="http://javascript.ru/forum/images/smilies/dance3.gif" title="ZZZ"/></td> </tr> </table> выглядит всё это вот так Сейчас буду разбираться с последним кодом от рони. |
Цитата:
|
Часовой пояс GMT +3, время: 06:06. |