Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   .live("drop") - ??? (https://javascript.ru/forum/jquery/24297-live-drop.html)

kiff86 25.12.2011 11:29

.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 с подгруженными элементами?

B@rmaley.e><e 25.12.2011 17:43

Если не вникать особо, то самый простой способ — bind'ить обработчик после подгрузки элемента.

kiff86 25.12.2011 21:51

то есть засунуть bind в калбэк ajax ?

B@rmaley.e><e 25.12.2011 21:51

Да.

kiff86 25.12.2011 21:53

ок попробую, пасибо.

kiff86 26.12.2011 11:55

попробовал, бинды dragover и dragleave работают.. однако самый главный бинд -drop по прежнему молчит(

kiff86 26.12.2011 12:24

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


Часовой пояс GMT +3, время: 19:51.