Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   jQuery -> onmouseover (https://javascript.ru/forum/dom-window/27003-jquery-onmouseover.html)

yesorno 30.03.2012 21:34

jQuery -> onmouseover
 
Добрый вечер,

есть несколько div-блоков, имеющих класс ".class1", с css-атрибутом visibility: hidden.

По событию onmousemove должен подсвечиваться тот блок, под которым находится курсор


$(".class1").mousemove(function(){

$("#text").css('visibility','visible');
;})
Этот код подсвечивает только первый из блоков, вне зависимости над каким курсор...подскажите что нить плз

Pavel M. 31.03.2012 09:28

по-моему, html элементы c visibility:hidden вообще не реагируют на события мыши

melky 31.03.2012 10:21

Цитата:

Сообщение от Pavel M. (Сообщение 165976)
по-моему, html элементы c visibility:hidden вообще не реагируют на события мыши

Вы правы.

T-sh 31.03.2012 10:30

.class1{
display: none;
blah-blah-blah...
}

$(".class1").mousemove(function(){
$(this).css('display','block');
// либо
$(this).show();
}
}

yesorno 31.03.2012 21:27

Не совсем точно сформулировал задачу. Правильно вот так: есть несколько div-блоков, имеющих класс ".class1", внутри каждого - по блоку с классом ".class2" и css-атрибутом visibility: hidden. Нужно чтобы при наведении курсора на блок с ".class1" становился видимым элемент с классом ".class2" и исчезал при удалении курсора с ".class1"

Решение: (кстати с visibility:nidden работают mouse-ивенты)

$(".class1").mouseover(function(){
    
    $(this).find(".class2").css('visibility','visible');
    ;})
     
$(".class1").mouseout(function(){
    
    $(this).find(".class2").css('visibility','hidden');
    ;})


Можно ли как то оптимизировать этот код, ну в плане скорости выборки...?

T-sh 31.03.2012 21:33

Цитата:

Сообщение от yesorno (Сообщение 166110)
Не совсем точно сформулировал задачу. Правильно вот так: есть несколько div-блоков, имеющих класс ".class1", внутри каждого - по блоку с классом ".class2" и css-атрибутом visibility: hidden. Нужно чтобы при наведении курсора на блок с ".class1" становился видимым элемент с классом ".class2" и исчезал при удалении курсора с ".class1"

Решение: (кстати с visibility:nidden работают mouse-ивенты)

$(".class1").mouseover(function(){
    
    $(this).find(".class2").css('visibility','visible');
    ;})
     
$(".class1").mouseout(function(){
    
    $(this).find(".class2").css('visibility','hidden');
    ;})


Можно ли как то оптимизировать этот код, ну в плане скорости выборки...?


$('.class1').hover(
      function () {
        $(this).find('.class2').css('visibility','visible');
      },
      function () {
        $(this).find('.class2').css('visibility','hidden');
      }
    );

yesorno 31.03.2012 21:39

Спасиба, а есть какая то альтернатива find, вроде бы есть метод children? Он быстрее будет искать?

T-sh 31.03.2012 21:50

Цитата:

Сообщение от yesorno (Сообщение 166113)
Спасиба, а есть какая то альтернатива find, вроде бы есть метод children? Он быстрее будет искать?

да, если нужно искать только в непосредственных потомках — можно и даже нужно использовать children(), а если нужно "копать" глубже одного "поколения" — find();

Но, т.к. у вас всего один потомок, то и find() и children() выполнят абсолютно одинаковые действия за одинаковое время :) оптимизации здесь не добиться.

yesorno 31.03.2012 21:53

Ясно, спасибо!


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