Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.03.2015, 13:04
Аспирант
Отправить личное сообщение для DDSSDD Посмотреть профиль Найти все сообщения от DDSSDD
 
Регистрация: 06.04.2011
Сообщений: 53

Скрыть все по hover, кроме активного
Блин, что то я запарился с элементарной ситуевиной...

Есть схема (картинка jpg) в div-е. Картинка фоновая и задана через background-size: cover.
В этом диве расставлены подсказки по схеме (тоже div-ы c одинаковыми ID).
Все работает просто - наводишь курсор на подсказку, cover - сбрасывается и фоновая схема позиционируется увеличивая то место, где стоит подсказка.

Задача в том, что бы при наведении на одну подсказку другие скрывать.

Казалось бы чего там, CSS :hover и всего делов то.
Но если с помощью CSS то нужно каждому div-у с подсказкой давать уникальный ID и перебирать их все, описывая каждое событие.
Более того, в таком варианте я не могу получить доступ (скрыть) к тем div-ам, которые стоят выше в коде по событию элемента который ниже в коде.

Пробовал на JS - все можно сделать, но опять же нужно перчислять все ID подсказок, что неудобно и не практично ибо на каждой схеме их будет разное количество.

Думаю нужно написать функцию, логику, и запускать ее по событию на каждой подсказке.

Вот только как это сделать с одинаковыми ID и не затрагивать активный элемент (у которого такой же ID) на который в данный момент наведен курсор?

<div id="combox">

<div class="cont"></div>

<div class="cont"></div>

<div class="cont"></div>

</div>


Пробовал и так:

(function() {
    var switcher = $('[class *= "cont"]'),
         target = $('#combox div');
    
    switcher.hover.not(this)(
        function() { target.hide(); },
        function() { target.show(); }
    );
})();


И так:

var imgid;
$('.cont').mouseenter(function(){
imgid = this.id;
$('.cont').each(function(){
if(this.id==imgid) $(this).stop(false,true).css('visibility', 'hidden');
else $(this).stop(false,true).css('visibility', 'visible');
});
});


В общем подскажите плиз.. Вопрос видать детский совсем...
Ответить с цитированием
  #2 (permalink)  
Старый 11.03.2015, 13:23
Аспирант
Отправить личное сообщение для DDSSDD Посмотреть профиль Найти все сообщения от DDSSDD
 
Регистрация: 06.04.2011
Сообщений: 53

Пробую сейчас с .not(this) Но, что то не как...
Ответить с цитированием
  #3 (permalink)  
Старый 11.03.2015, 14:29
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

div:not(:hover) {
    color: #f00;
}


Не пойдет?
Ответить с цитированием
  #4 (permalink)  
Старый 12.03.2015, 11:34
Аспирант
Отправить личное сообщение для DDSSDD Посмотреть профиль Найти все сообщения от DDSSDD
 
Регистрация: 06.04.2011
Сообщений: 53

Сообщение от laimas Посмотреть сообщение
div:not(:hover) {
    color: #f00;
}


Не пойдет?
Подошло бы, но такое решение не позволит скрывать div-ы находящиеся выше в коде, чем тот по которому :hover
Ответить с цитированием
  #5 (permalink)  
Старый 12.03.2015, 12:01
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

У вас 3 элемента в родителе, и для них подсказки, навел - есть, укатил - нет. Не понятна проблема, а div:not(:hover) тоже самое что и hover.not(this). Можно всем скрыть и id для этого не нужно, а у текущего показать, если уж какая-то проблема с доступом.
Ответить с цитированием
  #6 (permalink)  
Старый 12.03.2015, 12:37
Аспирант
Отправить личное сообщение для DDSSDD Посмотреть профиль Найти все сообщения от DDSSDD
 
Регистрация: 06.04.2011
Сообщений: 53

Сообщение от laimas Посмотреть сообщение
У вас 3 элемента в родителе, и для них подсказки, навел - есть, укатил - нет. Не понятна проблема, а div:not(:hover) тоже самое что и hover.not(this). Можно всем скрыть и id для этого не нужно, а у текущего показать, если уж какая-то проблема с доступом.
Да справился уже

<script>
     $("div[id^='cont']").hover(
      function () {
        $("div[id^='cont']").not(this).css ("display","none");
      }, 
      function () {
      $("div[id^='cont']").not(this).css ("display","block");
      }
    );
</script>


НА CSS не получится, говорю же, что не могу получить доступ к первому диву с второго или третьего по списку. Вот от первого к второму и тд. пожалуйста. Тут без JS я так понял никак.

Если
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Название ячейки таблицы Questioner Общие вопросы Javascript 6 16.02.2011 09:58
Помогите разобраться с кроссбраузерностью Javascript'a skvsk Events/DOM/Window 6 09.12.2010 09:05
Выбрать все, кроме одного div'а. Как? Юрий Шу jQuery 9 27.05.2010 17:37
Выбрать все элементы кроме $(this) shustrikk jQuery 2 13.03.2010 14:17
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37