Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Всплывающее окно по id (https://javascript.ru/forum/jquery/74964-vsplyvayushhee-okno-po-id.html)

NeonMan 21.08.2018 23:59

Всплывающее окно по id
 
Подскажите пожалуйста, есть область - это path в svg, их несколько разных, для каждой есть всплывающее окно, но как при наведении прописать, что бы для области открывалось конкретное окно (по уникальному id например), а другое окно, открытое до этого из другой области закрывалось (окна сделаны div).

рони 22.08.2018 00:55

NeonMan,
сделайте минимальный макет

NeonMan 22.08.2018 11:06

Поступил таким образом:
$('.country').hover (
function() {
    $('.country-popup').hide();
    $('.country').css('opacity','0');
    $(this).css('opacity','1');
    var activeCountry = $(this).attr('href');
    $(activeCountry).show();          
});

Прописал href в path для id каждого из окон, но правильно ли в path прописывать href, может есть какой-то еще способ для такой ситуации, было бы интересно взглянуть

рони 22.08.2018 11:40

NeonMan,
... ждите телепатов

NeonMan 22.08.2018 13:27

))
вот карта с областями, о которой я писал выше, сделал попапы поведение, код который написал, но есть может какой-то еще способ, ради проф интереса, а то мне кажется прописывать href="" в path svg файла не очень корректно

рони 22.08.2018 16:47

NeonMan,
можно по индексу тогда никаких id не надо совсем

рони 22.08.2018 20:20

NeonMan,
$(function() {
    var country = $(".country"),
        popup = $(".country-popup"),
        btn = $(".country-popup-btn");

    function hide() {
        popup.hide();
        country.css("opacity", "0")
    }
    country.hover(function() {
        hide();
        $(this).css("opacity", "1");
        var activeCountry = country.index(this);
        popup.eq(activeCountry).show()
    });
    btn.click(function(event) {
        event.preventDefault();
        hide()
    })
});

NeonMan 22.08.2018 22:35

Интересная конструкция, спасибо

NeonMan 23.08.2018 22:10

Подскажите такой момент, есть такая структура
$('#kazan').mouseenter (
    function() {
        $('.menu-kazan').css('background', '#CEF5FC');      
});
$('#kazan').mouseout (
    function() {
        $('.menu-kazan').css('background', 'none');
});

Это при наведении на один элемент, подсвечивается другой, и когда курсор уходит с элемента, тому присваивается значение background: none, но потом когда уже навожу непосредсвенно на .menu-kazan больше не срабатывает .menu-kazan:hover {background: цвет} из css. Может есть какой-то другой способ в jquery сделать такую операцию?

рони 23.08.2018 22:31

NeonMan,
цвет нужен - лучше цвет и менять.
Цитата:

Сообщение от NeonMan
Подскажите

уберите none из кода и будет вам счастье.

NeonMan 24.08.2018 16:14

понял, спасибо

рони 24.08.2018 16:44

NeonMan,
Пример: hover вариант 1
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <style type="text/css">
  div.hot{
      width: 100px;
      height: 100px;
      border: 1px dashed Gray;
      padding: 5px;
  }
  .Red{
      background-color: Red;
  }
  .menu-kazan:hover{
      background-color: #CEF5FC;
  }
   </style>
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

</head>

<body>

<div class="hot Red" id="kazan">kazan</div>
<div class="hot menu-kazan">menu-kazan</div>
<script>

$('#kazan').on('mouseenter mouseleave', function(event) {
   var color = event.type == 'mouseenter' ? '#CEF5FC' : '';
        $('.menu-kazan').css('backgroundColor', color);
});

</script>
</body>

</html>

Пример: hover вариант 2
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <style type="text/css">
  div.hot{
      width: 100px;
      height: 100px;
      border: 1px dashed Gray;
      padding: 5px;
  }
  .Red{
      background-color: Red;
  }
  .menu-kazan:hover, .menu-kazan.hover{
      background-color: #CEF5FC;
  }
   </style>
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

</head>

<body>

<div class="hot Red" id="kazan">kazan</div>
<div class="hot menu-kazan">menu-kazan</div>
<script>

$('#kazan').on('mouseenter mouseleave', function(event) {
 $('.menu-kazan').toggleClass('hover', event.type == 'mouseenter')
});

</script>
</body>

</html>

NeonMan 25.08.2018 23:27

а что происходит, когда "?" в коде, да ли? что он спрашивает, не if же(спасибо за варианты, попробовал)

рони 25.08.2018 23:31

NeonMan,
Оператор вопросительный знак „?“


Часовой пояс GMT +3, время: 20:47.