2014-04-02 93 views
0

我想發送一個元素到一個函數來計算一些數據。我使用$.find()來獲取元素,並使用$.width來獲得它的寬度,但由於某種原因,它總是顯示0.我不知道爲什麼。我錯過了什麼?

這裏是一個ajax成功回調通了:

success: function(data) 
{ 
    var result = jQuery(data).find('.dir_content'); // get element with find here 
    var margin_amount = getScreenMiddle(result); // pass element to function 

    result.attr('id', full_path); 
    result.css('margin-right', margin_amount); 

    if(prev_element != null) 
    { 
     prev_element.css("margin-right", 0); 
    } 
    prev_element = result; 

    jQuery('.list-inline').append(result); 
}, 

,這裏是功能

function getScreenMiddle(elem) 
{ 
    var center_pos = ($(window).width() - elem.width())/2 + "px"; 
             // this is always 0 
    return center_pos; 
} 

所以這個功能只是返回這是錯誤的值相同。我需要以另一種方式傳遞嗎?

+0

你有沒有嘗試用另一種包裝$()?例如。 ($(window).width() - $(elem).width())/ 2 +「px」; – ysrb

+0

除非將元素渲染到DOM,否則不會計算尺寸 –

+0

您需要先在文檔中追加元素,然後嘗試 –

回答

0

首先包括DOM文檔中的結果元素,然後嘗試寬度

success: function(data) 
    { 
     var result = jQuery(data).find('.dir_content'); // get element with find here 
    jQuery('.list-inline').append(result);  
    var margin_amount = getScreenMiddle(result); // pass element to function 

     result.attr('id', full_path); 
     result.css('margin-right', margin_amount); 

     if(prev_element != null) 
     { 
      prev_element.css("margin-right", 0); 
     } 
     prev_element = result; 


    },