Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.12.2011, 11:29
Аспирант
Отправить личное сообщение для kiff86 Посмотреть профиль Найти все сообщения от kiff86
 
Регистрация: 26.03.2011
Сообщений: 52

.live("drop") - ???
Всем привет.
Есть событие - drop.
Как его заставить работать через live?
Дропбокс подгружается через ajax. Соответственно чтобы работать с ним использую .live, однако вот такой код не работает..
$('#dropbox').live("drop", function(event) {
            event.preventDefault();
    	    var file = event.dataTransfer.files[0];
            
    		if (file.size > maxFileSize) {
    			$(this).text('Файл слишком большой!');
    			return false;
    		}
    		var xhr = new XMLHttpRequest();
    		xhr.upload.addEventListener('progress', uploadProgress, false);
    		xhr.onreadystatechange = stateChange;
    		xhr.open('POST', 'php/upload.php');
    		xhr.setRequestHeader('X-FILE-NAME', file.name);
    		var fd = new FormData;
    		fd.append("file", file);       
    		xhr.send(fd);
        });

кстати, также не работают такие события -
$('#dropbox').live('dragover', function(event){
            $(this).css("backgroundColor","#D0FF71");
        }).live('dragleave', function(event){
            $(this).css("backgroundColor","none");
        });

Хотя если вместо live прописать bind или оставить live, но только сам dropbox будет не подгружен, а уже на страничке, то все будет работать. Вот и вопрос - как заставить работать drop с подгруженными элементами?
Ответить с цитированием
  #2 (permalink)  
Старый 25.12.2011, 17:43
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Если не вникать особо, то самый простой способ — bind'ить обработчик после подгрузки элемента.
Ответить с цитированием
  #3 (permalink)  
Старый 25.12.2011, 21:51
Аспирант
Отправить личное сообщение для kiff86 Посмотреть профиль Найти все сообщения от kiff86
 
Регистрация: 26.03.2011
Сообщений: 52

то есть засунуть bind в калбэк ajax ?
Ответить с цитированием
  #4 (permalink)  
Старый 25.12.2011, 21:51
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Да.
Ответить с цитированием
  #5 (permalink)  
Старый 25.12.2011, 21:53
Аспирант
Отправить личное сообщение для kiff86 Посмотреть профиль Найти все сообщения от kiff86
 
Регистрация: 26.03.2011
Сообщений: 52

ок попробую, пасибо.
Ответить с цитированием
  #6 (permalink)  
Старый 26.12.2011, 11:55
Аспирант
Отправить личное сообщение для kiff86 Посмотреть профиль Найти все сообщения от kiff86
 
Регистрация: 26.03.2011
Сообщений: 52

попробовал, бинды dragover и dragleave работают.. однако самый главный бинд -drop по прежнему молчит(
Ответить с цитированием
  #7 (permalink)  
Старый 26.12.2011, 12:24
Аспирант
Отправить личное сообщение для kiff86 Посмотреть профиль Найти все сообщения от kiff86
 
Регистрация: 26.03.2011
Сообщений: 52

проблема видимо в том, что не отменить стандартное действие браузера.. то есть event.preventDefault() - не отрабатывает похоже..
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск