Как определить состояние CSS: hover в селекторе jQuery?
Мне нужно определить цвет фона div: hover с jQuery, но следующее, похоже, не работает:
$(".myclass:hover div").css("background-color","red");
Как я могу получить тот же результат? Важно, что это должно быть сделано с jQuery, но по какой-то причине он не работает. Есть предложения? Спасибо!
6 ответов:
Я бы предложил использовать CSS над jquery (если это возможно) в противном случае вы можете использовать что-то вроде этого
$("div.myclass").hover(function() { $(this).css("background-color","red") });Вы можете изменить ваш выбор в соответствии с вашими потребностями.
Как прокомментировал @A. Wolff, если вы хотите использовать этот эффект наведения на несколько классов, вы можете использовать его следующим образом
$(".myclass, .myclass2").hover(function(e) { $(this).css("background-color",e.type === "mouseenter"?"red":"transparent") })
вы можете попробовать это:
$(".myclass").mouseover(function() { $(this).find(" > div").css("background-color","red"); }).mouseout(function() { $(this).find(" > div").css("background-color","transparent"); });
Ну, вы не можете добавить стиль с помощью псевдо селекторов, таких как
:hover,:after,:nth-child, или что-то подобное с помощью jQuery.если вы хотите добавить такое правило CSS, вам нужно создать
<style>элемент и добавить, что:hoverправило к нему так же, как и в CSS. Тогда вам придется добавить, что<style>элемент на странице.С помощью
.hoverфункция кажется более подходящей, если вы не можете просто добавить css в таблицу стилей, но если вы настаиваете, вы можете делать:
$('head').append('<style>.myclass:hover div {background-color : red;}</style>')если вы хотите узнать больше о добавлении CSS с JavaScript, вы можете проверить одно из сообщений в блоге Дэвида Уолша.
Я знаю, что это принятый ответ, но если кто-то пойдет на это, мое решение может помочь.
Я нашел этот вопрос, потому что у меня есть прецедент, когда я хотел отключить состояние :hover для элементов по отдельности. Поскольку нет никакого способа сделать это в DOM, другой хороший способ сделать это-определить класс в CSS, который переопределяет состояние наведения.
например, css:
.nohover:hover { color: black !important; }затем с помощью jQuery:
$("#elm").addClass("nohover");С помощью этого метода, вы можете переопределить столько элементов DOM, сколько хотите, без привязки тонны событий onHover.
Использовать JQuery
Hoverчтобы добавить / удалить класс или стиль при наведении курсора:$( "mah div" ).hover( function() { $( this ).css("background-color","red"); }, function() { $( this ).css("background-color",""); //to remove property set it to '' } );
слишком поздно, однако лучший пример, как добавить псевдо элемент в стиле jQuery
$(document).ready(function(){ $("a.dummy").css({"background":"#003d79","color":"#fff","padding": "5px 10px","border-radius": "3px","text-decoration":"none"}); $("a.dummy").hover(function() { $(this).css("background-color","#0670c9") }).mouseout(function(){ $(this).css({"background-color":"#003d79",}); }); });<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script> <a class="dummy" href="javascript:void()">Just Link</a>
Comments