Кажется, работает, если вы не установите preventBubble
на false
:
$('#drop').bind('dragenter', dragenter);
$('#drop').bind('dragover', dragover);
$('#drop').bind('drop', drop);
DEMO
Обновление: Если вы посмотрите документацию , передача трех параметров, где последний является логическим, интерпретируется как:
.bind( eventType, [eventData], preventBubble )
, что означает, что обработчикиспользуется не как обработчик событий, а как данные событий.
Они изменили способ определения обработчика.В jQuery 1.5.2 это было:
if ( jQuery.isFunction( data ) || data === false ) {
fn = data;
data = undefined;
}
Видите ли, когда вторым аргументом была функция, тогда этот использовался как обработчик события (вместо третьего).
Но в jQuery 1.6.2 оно было изменено на:
if ( arguments.length === 2 || data === false ) {
fn = data;
data = undefined;
}
Теперь проверяется только количество передаваемых аргументов.Так как в вашем случае data
не является false
(это функция), и вы передаете три аргумента, fn
не изменяется.Он остается false
.
Когда обработчик равен false
, , тогда это происходит :
if ( handler === false ) {
handler = returnFalse;
} else if ( !handler ) {
// Fixes bug #7229. Fix recommended by jdalton
return;
}
Так что это может фактически рассматриваться как ошибка в jQuery 1.5который теперь исправлен и не является проблемой с этими конкретными событиями.