как сделать несколько id в функции?

Тема в разделе "JavaScript", создана пользователем yurets86, 21 апр 2014.

Модераторы: ZiX
  1. yurets86

    yurets86 Постоялец

    Заблокирован
    Регистр.:
    25 сен 2011
    Сообщения:
    135
    Симпатии:
    32
    Доброго времени суток, подскажите, есть у меня функция
    Код:
    $('#cart').live('mouseleave', function() {
                $(this).removeClass('active');
            });
    как мне в нее добавить еще один айдишник
    Код:
    #hello
    , чтоб пока мышка на этих двух айдишниках была, - классы активны были ?
     
  2. dwarf

    dwarf Постоялец

    Регистр.:
    12 июн 2011
    Сообщения:
    88
    Симпатии:
    18
    Код:
    $('#cart, #hello').live('mouseleave', function() {
                $(this).removeClass('active');
    });
     
  3. yurets86

    yurets86 Постоялец

    Заблокирован
    Регистр.:
    25 сен 2011
    Сообщения:
    135
    Симпатии:
    32
    так пробывал, но почему то когда мышка выходит за область класс активный все ровно остается ...

    полный код функции
    Код:
    $('#cart > .heading a').live('click', function() {
            $('#cart').addClass('active');
           
            $('#cart').load('index.php?route=module/cart #cart > *');
           
            $('#cart').live('mouseleave', function() {
                $(this).removeClass('active');
            });
        });
     
  4. dwarf

    dwarf Постоялец

    Регистр.:
    12 июн 2011
    Сообщения:
    88
    Симпатии:
    18
    а где здесь #hello должно присутствовать?
     
  5. yurets86

    yurets86 Постоялец

    Заблокирован
    Регистр.:
    25 сен 2011
    Сообщения:
    135
    Симпатии:
    32
    вот и я спрашиваю, куда мне класс hello запилить, чтоб все работало так же как и без него, т.к. у меня блок hello абсолютным позиционированием помещен в блок cart, и как только я попадаю на hello, пропадает класс active, - что не есть хорошо, вот и надо как то сделать, чтоб было кликаем по карт, появляется класс active, и пока мы курсором на нем, он работает, и не пропадал, когда мы курсором попадаем на hello
     
  6. dwarf

    dwarf Постоялец

    Регистр.:
    12 июн 2011
    Сообщения:
    88
    Симпатии:
    18
    чтобы после перемещения курсора с блока #cart на блок #hello класс не пропадал, нужно чтобы в html блок #hello находился внутри (по иерархии, а не просто позиционированием) блока #cart
    иначе событие всегда будет вызываться.
     
  7. yurets86

    yurets86 Постоялец

    Заблокирован
    Регистр.:
    25 сен 2011
    Сообщения:
    135
    Симпатии:
    32
    да это я понимаю, не хотелось менять структуру движка, вот и скал костыли уже чтоб выкрутится с ситуации
     
  8. dwarf

    dwarf Постоялец

    Регистр.:
    12 июн 2011
    Сообщения:
    88
    Симпатии:
    18
    есть очень костыльный вариант - в функцию mouseleave вставить задержку (через setTimeout) удаления класса active, которую чистить, если курсор попадает на #cart.
     
  9. yurets86

    yurets86 Постоялец

    Заблокирован
    Регистр.:
    25 сен 2011
    Сообщения:
    135
    Симпатии:
    32
    а можно в примере, как это будет выглядеть ?
     
  10. dwarf

    dwarf Постоялец

    Регистр.:
    12 июн 2011
    Сообщения:
    88
    Симпатии:
    18
    Как -то так. Не уверен, будет ли именно это код работать, но принцип такой.
    HTML:
    var helloIsActive = false;
    $('#hello').live('mouseenter', function() {
            helloIsActive = true;
    });
    $('#hello').live('mouseleave', function() {
            helloIsActive = false;
    });
    
    $('#cart > .heading a').live('click', function() {
        $('#cart').addClass('active');
         
        $('#cart').load('index.php?route=module/cart #cart > *');
          
        $('#cart').live('mouseleave', function() {
            setTimeout(function() {
                if(!helloIsActive) {
                  $(this).removeClass('active');
                }
            }, 500);
        });
    });