2012-05-07 3 views

ответ

5

Используйте API событий jQuery вместо запуска, который вы используете сейчас. Если вы используете jQuery API, он работает правильно. Так как вы используете jQuery1.7.1:

jQuery(function($) { 
    $("#t").on('mouseleave', function() { 
     $(this).effect("pulsate", { times:1}, 200); 
    }); 
}​);​ 

Пример: http://jsfiddle.net/2ZRBx/6/

+0

Ключ здесь не в том, чтобы переместить обработчик из встроенного javascript в jQuery-события, но использовать событие mouseleave вместо mouseout. Я использовал mouseout в приведенном выше коде, проблема все равно будет присутствовать. – Mik

2

Оберните стол в div, а затем положите событие mouseout на этот div.

5

Поскольку вы используете JQuery, я бы удалить встроенный JavaScript и сделать это:

function go2() { 
    $("#t").effect("pulsate", { 
     times: 1 
    }, 200); 
} 
$('#t').mouseleave(function() { 
    go2(); 
});​ 

jsFiddle example.

+0

Ничего себе, это потрясающе! Интересно, как jQuery может это сделать. –

+1

Почему бы не использовать обратный вызов JavaScript (как я и предложил в своем ответе)? И получение в 2 раза элемента #t из DOM - действительно дорогое время. Лучше использовать '$ (this)' в 'go2'функции или сохранить' $ ('# t') 'в переменной и использовать это –

+1

Вы можете проверить документы на mouseleave и хороший пример того, как мыши и мышь jQuery отличаются на http://api.jquery.com/mouseleave/ – j08691

Смежные вопросы