2013-04-27 101 views
2

我使用plupload,我想動態更新我的畫廊(jquery.ajax()),我使用lightbox &等(換句話說,我想保持js在加載內容的Ajax工作),當所有的文件上傳。jQuery - 使用live而不是綁定?

我現在正在做的就是這個

var upload = $el.pluploadQueue(); 
upload.bind('UploadComplete',function(){ 
//ajax & etc 
} 
當然 .bind()

不是爲未來的元素,我試圖將其更改爲.live()upload.live('UploadComplete',function(){),但由於某種原因不執行該事件。

我也試圖與.on()

$(document).on('UploadComplete', upload, function() {

delegate

$(document).delegate(upload, 'UploadComplete', function() {

,但同樣的事情live()

我在做什麼錯?

回答

1

請勿使用live,其棄用(自1.9起死亡)。改爲使用on或者delegate。從http://api.jquery.com/live/

在jQuery 1.7的,所述.live()方法被棄用。使用.on()連接到事件處理程序 。老版本jQuery的用戶應該優先使用 .delegate(),而不是.live()。

+0

我也試過,但沒有運氣。你可以給我一個例子,說明upload.bind('UploadComplete',function(){'應該看起來像'delegate'嗎? – user2081339 2013-04-27 20:41:49

+0

好吧,你現在提到你正在使用plupload,可能還有其他的事情正在進行。我懷疑它不是綁定中的問題,而是代碼中的其他地方,我首先仔細檢查plupload插件是否已初始化並正確使用。 – jsalonen 2013-04-27 20:48:39

+1

**「live」自1.9以來已經死亡** ,不棄用,但刪除! – gdoron 2013-04-27 20:52:29

1

雖然乍一看bind方法似乎是jQuery的bind,通過Plupload API快速搜索顯示它實現了自己的bind方法恰好有相同的簽名JQuery的版本。所以你的原始代碼很好,不使用任何棄用的功能。

編輯:

似乎有兩個問題:是bind被棄用(回答前一段),我怎麼可以顯示上傳的圖片,一旦上傳完成。至於第二個問題,希望這個例子讓你開始:

uploader.bind('UploadComplete', function(up, files) { 
    $.each(files, function(index, file) { 
    var img = $("<img />").attr('src', 'http://your-url.com/your-upload-directory/' + file.name); 
    img.load(function() { 
     //add lightbox specific code here 
     $('.img-container').append(img); 
    }); 
    }); 
}); 

如果您需要顯示的圖像更具體的幫助,你將有更詳細的代碼示例來更新你的問題。

+0

好吧:)非常感謝你讓我們知道,但我怎麼能解決我的問題? – user2081339 2013-04-27 21:12:37

+0

@ user2081339 - 不知道我理解你的問題。聽起來像你的原代碼工程,但你擔心依靠一個很快被刪除功能,雖然jQuery'bind'在以後的版本中被移除,但是Plupload'bind'(一個完全不相關的方法)沒有提及[API]中的棄用(http://www.plupload.com/plupload/docs/) api /#class_plupload.Uploader.html-bind)。 – ljfranklin 2013-04-27 21:18:35

+0

我的問題:我不能在使用JavaScript的任何內容中加載ajax - lightbox等內容 – user2081339 2013-04-27 21:26:35

相關問題