javascript
  • jquery
  • html
  • 2013-01-12 17 views 2 likes 
    2

    jQuery的方法.width()來獲取生成元件的寬度爲:得到使用寬度寬()生成的內容被用來

    html: 
    <div class='row-fluid' id='photo-preview'></div> 
    javascript: 
    for(i = 0;i < 4;i++){ 
        var imageSpan = "<div class='span3' id='span_" + i + "'><img src='" + images[i] +"'></div>" 
        $('#photo-preview').append(imageSpan); 
        var w = $('#span_' + i).width(); 
        console.log(w); 
        } 
    

    但它有寬度的不正確的值。這是百分比而不是像素的值。例如,w應該是400(400px),但js有80(80%)。

    我認爲這個問題可能是因爲元素是動態生成的。在控制檯中,當加載所有元素時,我可以通過.width()獲得正確的值。

    任何想法解決它?

    +0

    嘗試'$(imageSpan).WIDTH()'追加內容 – Eru

    +0

    @Eru THX之後,但它不工作 –

    +0

    '.WIDTH ()'總是以像素爲單位給出寬度。你確定元素的寬度沒有設置爲80像素嗎?任何看到演示的機會? – JJJ

    回答

    -1

    嘗試使用offsetWidth

    I.E.

    var w = $('#span_' + i).offsetWidth; 
    console.log(w); 
    

    這是我做的一個非常愚蠢的小提琴。我將寬度設置爲80%。如果你去到控制檯,你應該看到像素寬度(448像素)

    http://jsfiddle.net/bwm5s/

    +0

    用'.width()'得到相同的結果。 http://jsfiddle.net/bwm5s/1/ – JJJ

    4

    你要等待圖像的加載事件之前,你可以得到正確的高度。

    var img = '<img src="img_path.jpg">'; 
    $(img) 
        .load(function() { 
         console.log("width", $(this).width()); 
        }) 
        .appendTo('#photo-preview'); 
    

    編輯:爲配合您的例子:

    html: 
    <div class='row-fluid' id='photo-preview'></div> 
    javascript: 
    for(i = 0;i < 4;i++){ 
        var img = "<img src='" + images[i] +"'>"; 
        $(img) 
         .load(function() { 
          console.log("width", $(this).width()); 
         }) 
         .appendTo("<div class='row-fluid' id='photo-preview'>") 
         .appendTo('#photo-preview'); 
    
        } 
    
    +0

    Thx。你是對的。但.load()似乎也無法幫助。 –

    相關問題