Как вы можете привязать обработчик событий, только если он еще не существует?

У меня есть страница, к которой я хочу привязать события перетаскивания. Я хотел бы, чтобы вся страница в браузере была целью перетаскивания, поэтому я привязал свои события к объекту document. Однако содержимое моего приложения загружается в основную область содержимого через AJAX, и мне бы хотелось, чтобы эти обработчики событий были активны только тогда, когда страница загрузки в данный момент видна.

Прямо сейчас я привязываю обработчики событий при получении страницы загрузки; однако каждый раз, когда страница загрузки становится активной, она привязывает новый обработчик событий, из-за чего обработчик срабатывает несколько раз, когда пользователь переходит на страницу загрузки, покидает ее и затем возвращается. Я думал, что смогу решить эту проблему, если смогу заставить обработчик связываться только тогда, когда он еще не связан. Возможно ли это, или я упускаю из виду лучшую альтернативу?

Соответствующий код, если это поможет:

$(document).bind('dragenter', function(e) {
    e.stopPropagation();
    e.preventDefault();
}).bind('dragover', function(e) {
    e.stopPropagation();
    e.preventDefault();
}).bind('drop', function(e) {
    e.stopPropagation();
    e.preventDefault();
    self._handleFileSelections(e.originalEvent.dataTransfer.files);
});
24
задан Felix Kling 23 July 2012 в 13:06
поделиться