Jquery: если mouseleave = true, ДЕЛАЙТЕ ЭТО - PullRequest
4 голосов
/ 28 января 2011

Простой вопрос, как мне выполнить эту функцию в Jquery: проверить, находится ли мышь над .myBox

    if ($(".myBox").mouseleave = true) {
        DO SOMETHING
    } else {something else}

ИЛИ

    if ($(".myBox").mouseover = false) {
        DO SOMETHING
    } else {Something else}

ПРИМЕЧАНИЕ.ЕСЛИ заявление

Ответы [ 8 ]

10 голосов
/ 28 января 2011

jQuery предоставляет метод is для проверки условий относительно объекта jQuery. В вашем случае вы можете проверить псевдокласс :hover CSS:

$('.myBox').is(':hover') === true

Посмотрите на эту демонстрацию, попробуйте нажать кнопку (которая выдаст предупреждение true), и нажмите кнопку табуляции и нажмите Enter (без мыши она вернет false).

DEMO: http://jsfiddle.net/marcuswhybrow/LL5JD/

4 голосов
/ 28 января 2011

Взгляните на jQuery Mouse Over

$(".my_box").mouseover(function(){
    // Mouse over...
});

$(".my_box").mouseout(function(){
    // Mouse left...
});

Вот пример, добавление рамки к изображению при наведении на него и удаление его через x промежуток времени, еслион не был перевернут: Посмотрите, как он работает здесь

var hover_off = false;
var hover_count = 1000;

$(".my_box").mouseover(function() {
    hover_off = false;
    $(this).addClass('hovering');
});

$(".my_box").mouseout(function() {
    hover_off = true;
    setTimeout(myMouseOut, hover_count);
});

function myMouseOut() {
    if (hover_off) {
        $(".my_box").removeClass('hovering');
    }
}
2 голосов
/ 15 апреля 2011

Это верно, $ ('. MyBox'). Is (': hover'), используемый с jQuery 1.5.1, выдает ошибку, но в моих тестах только в Opera Browser (11.01) Неопределенное исключение: синтаксическая ошибка, нераспознанное выражение: hover

Обходной путь использует отрицательное выражение : $ ('. MyBox'). Is ('not (: hover)') Это работало хорошо, пока мои тесты в Opera 11, FF4, IE7, Chrome 5.

1 голос
/ 07 августа 2012

Это помогло мне:

var hover = false;
$('.someClass').each(function(i,e){
    hover = !hover ? $(e).is(':hover') : true;
});

if (hover)
    // do something
else
    // do something else
1 голос
/ 28 января 2011
$(".myBox").hover(
           function(){
               //DO SOMETHING ON MOUSE ENTER
           },
           function(){
               //DO SOMETHING ON MOUSE LEAVE
           }
 });
1 голос
/ 28 января 2011

Использовать .hover () http://api.jquery.com/hover/

0 голосов
/ 28 января 2011

Действовать на событиях mouseenter и mouseleave.

Или используйте hover, который может справиться с ними обоими ..

$('.myBox').hover(
   function(e){
     //do the mouseenter things here...
   },
   function(e){
     //do the mouseleave things here...
   }
);

Пример на http://www.jsfiddle.net/gaby/ECYD4/

0 голосов
/ 28 января 2011

используйте это: http://plugins.jquery.com/project/enterleave-events

$('.myBox').bind('enter leave',function() {
  // do something, use $(this) to get the object
});
...