jQuery.animate () - событие клика не срабатывает - PullRequest
0 голосов
/ 18 ноября 2011

При использовании .animate() при изменении top / left событие щелчка, похоже, не срабатывает.Например:

<div style="width: 640px; height: 480px; position: relative;">
<div id="child" onclick="alert('ok')" style="position: relative;">Some text</div>
</div>

С помощью скрипта, например:

$('#child').animate({ top: 200, left: 200 }, 2000);

Когда вы нажимаете div, вы не видите оповещение - вы должны подождать, пока элемент перестанет двигаться первым,Есть ли способ решить эту проблему?: (

РЕДАКТИРОВАТЬ: Мой пример не соответствует моей проблеме. Извините, ребята! Спасибо за быстрые ответы.

РЕДАКТИРОВАТЬ: обновленный пример здесь с воспроизведенной проблемой: http://jsfiddle.net/M9udv/8/ Также я использую последнюю версию Chrome.

Снова отредактируйте: ОК, я использую jquery.live("click", function() {});, и, кажется, это работает, когда я также включаю $(targ).stop(true); в функцию.

Ответы [ 3 ]

1 голос
/ 18 ноября 2011

Это работает.
Возможно, из-за того, что он анимирован, вам трудно щелкнуть по фактическому элементу (который довольно мал).
Взгляните сюда: http://jsfiddle.net/GA5Re/

1 голос
/ 18 ноября 2011

Я полагаю, что это работает, однако каркас вокруг элемента довольно маленький, и его трудно щелкнуть, когда он движется. Я сделал пример этой работы (и протестировал в нескольких разных браузерах) с некоторыми отступами, чтобы сделать элемент более легким для нажатия: http://jsfiddle.net/M9udv/

0 голосов
/ 18 ноября 2011

Почему бы просто не переместить предупреждение в код jQuery с помощью:

$('#child').click(function(){
alert('ok');
$(this).animate({ top: 200, left: 200 }, 2000);
});
...