#jquery #html #css #hover
#jquery #HTML #css #наведение
Вопрос:
Я заметил проблему с моим меню аккордеона jquery.
Когда я открываю раздел и закрываю его снова, функциональность ‘: hover’, похоже, перестает работать для этого конкретного раздела. Функция ‘:hover’ все еще работает в других разделах, которые я еще не щелкнул.
Если я щелкну их все, то ‘:hover’ перестанет работать для всех разделов.
Я был бы невероятно признателен за некоторую помощь.
Большое спасибо
Роберт
Вот ссылка jsFiddle на краткий пример кода, демонстрирующий проблему.
наведите курсор на разделы, чтобы увидеть, что позиции фона сдвинуты. Щелкните один раздел, затем щелкните другой и наведите курсор на предыдущий раздел. Происходит что-то странное 🙂
В этом примере, пожалуйста, обратите внимание, что расположение слайдов div отключено, в основной версии это нормально, хотя проблема хорошо продемонстрирована.
Комментарии:
1. Есть ли шанс, что вы могли бы создать пример jsFiddle или ссылку на реальную страницу?
2. Вот небольшой пример с jsfiddle. jsfiddle.net/yUyEC наведите курсор на разделы, чтобы увидеть, что позиции фона сдвинуты. Щелкните один раздел, затем щелкните другой и наведите курсор на предыдущий раздел. Происходит что-то странное 🙂
Ответ №1:
Во-первых, я бы сделал код допустимым, например
<div class="sidebar_game_header">
<a href="http://www.apple.com/">
<img src="http://robertmegone.com/jsfiddle/images/icn_1.png" alt="Game 4 Icon"/>
<div class="sidebar_game_header_text">Game 4</div>
</a>
</div>
Вы не можете вложить уровень блока div
в элемент встроенного уровня a
, это приведет к тому, что браузеры попытаются восстановить DOM и отобразить элементы так, как вы хотите, обычно это нормально, но как только вы добавите интерактивность с помощью JS функций, код / отображение, скорее всего, сломается .. не говорю, что это здесь, но это, скорее всего, не поможет 😉
тогда я бы сказал, что в этом меню вообще не требуется позиционирование или перемещение, должно быть достаточно просто поместить изображение и текст в «заголовок», используя встроенные блоки. Тогда у них не должно быть необходимости перемещаться (необычное поведение, которое происходит только сейчас)
Я не уверен точно, что вы пытаетесь сделать, но CSS может выполнять большую часть работы за вас, так что jQuery просто должен скользить вверх и вниз по дочерним меню и не иметь ничего общего с наведениями, которые будут работать через CSS, как в обычном меню.. но в любом случае .. вот некоторый исправленный HTML / CSS-код, который вроде как работает с вашим jQuery
JSFiddle: ЗДЕСЬ
обратите внимание, что IE7 выдает ошибку, я не знаю почему, но я думаю, что основы есть, я изменил вложенное значение div
на span
и выровнял его и изображение по вертикали с помощью встроенного блока, остальное не нужно было перемещать или позиционировать, поскольку это естественные позиции
если вы хотите, чтобы ссылки были белыми, вам нужно a
также указать в CSS color
в div, недостаточно указать цвет ссылки..
думаю, на этом пока все
Хорошо, я еще немного поиграл, я не совсем понимаю код, который вы использовали, но я просто почувствовал, что мне нужно извлечь CSS из jQuery, чтобы ваши состояния наведения активировались
Я создал обновленный пример, который кто-то, скорее всего, мог бы оптимизировать, это делает все, что я думаю; состояния наведения, перемещение фона и т.д. С помощью CSS, И единственное, что он делает, это добавляет класс в заголовок «open» accordion, чтобы он сохранял тот же CSS, что и состояние зависания
Последнее, в чем я не уверен, это в какой из этих ссылок вам нужно было бы предотвратить поведение по умолчанию (ссылки на заголовок?) — Я просто отключился и вообще не делал <span>
текст ссылкой 😉
Я также изменил внутренний список на список 😉 это работает так же
(кстати, IE7 больше не выдает исключение с этим кодом)
Новый пример: здесь
Комментарии:
1. Фантастический ответ, объекты sidebar_game_header класса div по-прежнему не отвечают на : наведите курсор еще раз после того, как они были выбраны и отменены. При наведении на элементы всегда должно выполняться ‘background-position:bottom;’, если они уже не выбраны. Хотя я так благодарен за вашу помощь.
2. Спасибо, все еще практикуюсь в jQuery, поэтому я обновил ответ решением, которое получает состояния наведения и добавляет класс, чтобы сделать «выбранный» выбор с тем же CSS .. надеюсь, логика поможет.. извините, я не использовал jQuery, который у вас был..