2012-06-25 54 views
0

從ajax返回的html img有'tocrop'類。目前,我調用函數對Ajax調用成功:在ajax加載的圖像上激活jcrop

$("#imageform").ajaxForm({ 
     target: '#image_upload_preview', 
     success: jcropp(), 
}) 

function jcropp(){ 
    $('.tocrop').Jcrop(); 
    } 

我一直在使用.load()的setInterval()和clearInterval嘗試( 'tocrop'。當$()Jcrop())。 bind()的它加載後綁定功能......似乎沒有任何工作

目前已經一直在這個thread但方案沒有奏效

任何幫助將不勝感激 這是已經嘗試綁定$('。tocrop')。load()給jcrop函數:

<img class='tocrop' src='/tempupload/".$upload_data['file_name']."'/> 

回答

1

你想

success: jcropp 

,而不是

success: jcropp() 

$("#imageform").ajaxForm({ 
    target: '#image_upload_preview', 
    success: jcropp 
}); 

或類似的東西,如果你還需要檢查圖像加載事件中取得成功。請澄清你從服務器返回的內容,如果它的一些HTML,那麼你應該爲圖像綁定一個加載事件,因爲在成功被觸發時圖像可能不會被加載。

$("#imageform").ajaxForm({ 
    target: '#image_upload_preview', 
    success: function(data){ 
     jcropp(); 
     } 
}); 

從您的評論「HTML從服務器重新調整了對負載類」

$("#imageform").ajaxForm({ 
    target: '#image_upload_preview', 
    success: function(data){ 
     var src = $('.tocrop').attr('src'); 
     $('.tocrop').load(function(){ 
      $(this).Jcrop(); 
      }).attr('src',src); 
     } 
}); 
+0

我已經使用.load(),但爲什麼你這裏的src屬性搞亂試過嗎? –

+0

確定這工作謝謝,我想我沒有包裝的第二個功能。但是我省略了.attr()的東西,不知道你想要做什麼 –

+0

在定義load()之後設置src會使它被觸發,也就是說,當成功被調用時,元素可能還沒有被嵌入進入DOM,你可以試試alert($('。tocrop').length && $('。tocrop')。attr('src'))以確保它在那時存在 – sabithpocker