Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/32: Рейтинг темы: голосов - 32, средняя оценка - 4.75
30 / 8 / 2
Регистрация: 20.08.2011
Сообщений: 615

Псевдокласс :hover и jQuery

21.05.2013, 21:08. Показов 6011. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер.
Странная вещь твориться, помогите разобраться.
Итак, есть картинка с таким стилем:
CSS
1
2
3
4
5
6
#shoppingCartImage
{
    background-image: url('shoppingCart.png');
    cursor: pointer;
}
#shoppingCartImage:hover {background-image: url('shoppingCartHover.png');}
Навели на картинку - она условно подсветилась.
Далее, когда я мышкой тыкаю на нею, то срабатывает скрипт:
JavaScript
1
2
3
4
5
6
7
$(document).ready(function ()
    {
        $('#shoppingCartImage').on('click', function()
        {
            $(this).css("background-image", "url('shoppingCartActive.png')");
        });
    });
Тут делается эффект чекбокса - нажал, отметился.
При этом возле картинки появляется всплывающая подсказка. Поглядели что в ней, нажали на кнопку закрыть на ней, тут срабатывает событие закрытия (встроено в плагин подсказки) и выполняется следующее:
JavaScript
1
2
3
4
onHide: function(content, element)
            {
                $(element).css("background-image", "url('shoppingCart.png')");
            }
Т.е. я возвращаю исходное состояние картинки.
И вот теперь я снова навожу мышь на мою картинку, и она уже не подсвечивается! Куда делась инструкция из стиля: #shoppingCartImage:hover {background-image: url('shoppingCartHover.png');} ? Как снова вернуть подсвечивание?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.05.2013, 21:08
Ответы с готовыми решениями:

Псевдокласс (hover) для одного элемента
Вот в чем проблема, есть див <div id="my">dfg <a href="fb.com">TEXTS1</a> asd dfg <a href="vk.com">TEXTS2</a> asd, dfg <a...

Как можно использовать псевдокласс в jQuery
.checkbox + label:before { content: ''; position: absolute; top: -4px; left: 0; width: 50px; height:...

Нужно при клике, исключить события hover, во. И еще глюки .hover. Отключение .hover в случае активации .click
Нужно при клике, исключить события hover, во. И 1. Глюки .hover: При наведении на блок, к которому он применяется(стрелочка):...

9
странник
 Аватар для Donald28
810 / 481 / 108
Регистрация: 28.05.2012
Сообщений: 1,518
Записей в блоге: 2
21.05.2013, 22:33
а в процессе выполнения подключенного плагина, id рассматриваемого элемента случайно не исчезло?

P.S. у меня дополнительный вопрос, почему возникла мода на такие конструкции:
JavaScript
1
 $('#shoppingCartImage').on('click', function()
почему не использовать просто:
JavaScript
1
 $('#shoppingCartImage').click(function()
1
30 / 8 / 2
Регистрация: 20.08.2011
Сообщений: 615
21.05.2013, 22:45  [ТС]
В исходном коде страницы все есть.

Ну, в jQuery пока не знаток -сделал так, как было написано на офф. сайте в статье про .css() =)
0
 Аватар для zhibirc
651 / 236 / 77
Регистрация: 18.02.2013
Сообщений: 784
22.05.2013, 01:27
Вместо
JavaScript
1
$().css();
попробуйте
JavaScript
1
$().addClass();
Добавлено через 5 минут
Цитата Сообщение от Donald28 Посмотреть сообщение
почему не использовать просто:
Совершенно согласен.
Но еще хуже, по-моему, будет ситуация, когда программист в коде использует для одних и тех же случаев разные методы и конструкции, только затрудняющие понимание кода. Мне кажется, программист с самого начала дожен вознамериться писать логичный и легкочитаемый код.

Добавлено через 4 минуты
И мне кажется, для оформления лучше использовать все же классы. Понятно, что для сокращения объема кода, для тех элементов, у которых для обеспечения доступа к ним через скррипты указан id, можно и оформление задать через них же. Но в общем случае, по-моему, стоит это разделять.
0
 Аватар для Xp-Apache
32 / 18 / 10
Регистрация: 20.05.2013
Сообщений: 47
22.05.2013, 06:19
Лучший ответ Сообщение было отмечено как решение

Решение

Тут всё дело в приоритетах стилей. Так как к элементу может быть применено несколько противоречащих стиля, им был задан следующий приоритет:
1. высший приоритет у встроенного стиля, например <div style="color: white"></div> ничем не перебьёшь;
2. далее следует стиль, применённый к идентификатору, например #someId {color: white};
3. далее следуют классы, псевдоэлементы и прочее.

Метод jQuery .css() создаёт встроенный стиль который имеет высший приоритет. Именно поэтому у Вас перестаёт обрабатывать стиль, заданный в псевдоэлементе :hover.
Для эффекта чекбокса (нажал - выделилось, опять нажал - убралось выделение) я рекомендую использовать метод toggleClass() и на сам класс навешать необходимую стилизацию. Например:

HTML5
1
<div id="el"></div>
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#el {
  background-color: white;
}
 
#el:hover {
  background-color: red;
}
 
#el.active {
  background-color: silver;
}
 
#el.active:hover {
  background-color: gray;
}
JavaScript
1
2
3
4
5
$(function() {
  $("#el").click(function() {
    $("this").toggleClass("active");
  });
});
3
 Аватар для zhibirc
651 / 236 / 77
Регистрация: 18.02.2013
Сообщений: 784
22.05.2013, 22:00
Цитата Сообщение от Xp-Apache Посмотреть сообщение
1. высший приоритет у встроенного стиля, например <div style="color: white"></div> ничем не перебьёшь;
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html>
        <head>
                <meta charset="utf-8" />
<title>Test</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<script type="text/javascript" src="jquery-1.9.1.js"></script>
        <script type="text/javascript">
                $(document).ready(function() {
                        $('body').css('background', 'green');});
        </script>
</head>
    <body style="background: black;">
    </body>
</html>
CSS
1
body { background-color: red; }
Фон станет зеленым. Внезапно. ;-)
0
 Аватар для Forastero
562 / 339 / 87
Регистрация: 15.05.2013
Сообщений: 812
Записей в блоге: 1
22.05.2013, 23:15
Donald28,
Цитата Сообщение от Donald28 Посмотреть сообщение
P.S. у меня дополнительный вопрос, почему возникла мода на такие конструкции:
Мне кажется .on('click', function{}) будет чуточку быстрее, поскольку .click() -это всего лишь обертка для предыдущей функции. Так же как и hover др.
0
 Аватар для Xp-Apache
32 / 18 / 10
Регистрация: 20.05.2013
Сообщений: 47
23.05.2013, 01:33
Цитата Сообщение от !i Посмотреть сообщение
Фон станет зеленым. Внезапно. ;-)
Ничего внезапного. Изначально <body style="background: black;"></body>, а после использования $("body").css("background", "green") изменяется встроенный стиль элемента: <body style="background: green"></body>. Я же не говорил, что сами встроенные стили элементов нельзя менять. Можно вообще сделать $("body").css("background", "") и фон (в Вашем примере) «внезапно» станет красным, т.к. по сути втроенный стиль будет удалён из DOM-элемента.
1
Develo0per
 Аватар для and_y87
424 / 368 / 75
Регистрация: 27.02.2012
Сообщений: 1,379
Записей в блоге: 98
23.05.2013, 10:07
Xp-Apache, Отличный пример привёл...

[progeR], Как вариант может когда пригодиться...
можно делать такие конструкции:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$(function() {
  $( element )
    .on( 'click', function() {
      $(this) /* действия*/
    })
    .on( 'change', function() {
      $(this) /* действия */
    })
    .on( 'hover', function() {
      $(this) /* действия */
    })
   .on( 'mouseleave mouseenter', function() {
      $(this) /* действия */
    })
});
Примерчик конструкции)
0
30 / 8 / 2
Регистрация: 20.08.2011
Сообщений: 615
25.05.2013, 22:42  [ТС]
Всем спасибо! toggleClass - гениальная вещь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.05.2013, 22:42
Помогаю со студенческими работами здесь

Изменение кода jQuery hover для множества изображений
Здравствуйте, мне нужна помощь с кодом jQuery. Вот код для смены изображения с одного на другое, но этот код работает только с одним...

Работа c hover jquery + движение объекта за курсором мыши
ребята, такая тема. У меня есть таблица 4 на 4. у неё есть кнопки удаления строк и столбцов. При наведение мышью на саму таблицу эти кнопки...

Каким образом можно создать hover эффект на чистом jquery?
Мне стало интересно. Можно ли создать hover эффект на чистом jquery/javascript. Это возможно? Если да. То поделитесь пожалуйста...

Как повесить css animation на событие hover в jQuery, чтобы анимация проигрывалась до конца
Есть анимация в CSS с помощью animation и ключевых кадров. Анимация срабатывает при наведении на элемент и длится одну секунду. Если курсор...

Псевдокласс :hover
Надо изменить атрибуты одного div'a при наведение на другой. Написал так: &lt;html&gt; &lt;head&gt; &lt;title&gt;Test...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru