2010-02-07 51 views
1

我有一個這樣的代碼剛剛進入開始部分爲您的jQuery的.css()的問題...幫助請

$(document).ready(function(){ 
    //Dynamically size wrapper div based on image dimensions 
    $("#tag-wrapper").css({width: $("#show_img").outerWidth(), height: $("#show_img").outerHeight()}); 

    //Append #tag-target content and #tag-input content 
    $("#tag-wrapper").append('<div id="tag-target"></div><div id="tag-input"></div>'); 

的想法是,在頁面加載時的CSS屬性應立即生效。但是... 當我第一次進入頁面時,它不工作,當我刷新它的頁面時它應該像它應該。任何想法如何解決這個問題?

+0

你不需要爲此使用jquery,可以在css中完成 – antpaw 2010-02-07 21:29:18

+3

也許jquery代碼在圖像加載之前運行,所以瀏覽器不知道它們的大小。 – Pointy 2010-02-07 21:29:50

+0

antpaw,我不能使用css directlt,因爲事先並不知道外部寬度和外部高度。這是一張照片的小標籤。所以你永遠不會事先知道照片的大小加載。 – 2010-02-08 10:51:29

回答

1

如果show_img設置了寬度和高度,則您的代碼將可用。 我相信它不能爲你工作的原因是因爲$(document).ready在DOM被加載時和頁面內容之前被調用。所以在那個時間點show_img還沒有加載,所以它不能得到的寬度和高度,除非你明確地設置它。

+0

我無法確定圖像的寬度和高度,因爲圖像非常不同。可以有最大限度的限制,但他們不固定我會嘗試第一個回答現在 – 2010-02-08 10:49:58

+0

謝謝你的提示。我已經得到了PHP的圖像大小,並設置了dinamically。所以現在它正在工作 – 2010-02-08 11:11:47

1

的圖像時,你試圖把寬度和高度都可能不加載,所以你必須在功能綁定到文件的load event,這將確保所有圖像加載執行前:

$(document).load(function() { 
    $('#tag-wrapper').css({ 
     width: $('#show_img').outerWidth(), 
     height: $('#show_img').outerHeight() 
    }).append('<div id="tag-target"></div><div id="tag-input"></div>'); 
}); 
+0

如果圖像已經通過文檔就緒加載,這很可能是第二次加載頁面,這將失敗。您可以將其綁定到文檔上的「加載」,當文檔*包括所有圖像*已加載時觸發。 – bobince 2010-02-07 22:34:47

+0

@bobince,好點。我已經更新了我的答案。 – 2010-02-08 07:20:30

+0

Tatu此代碼無法正常工作.... – 2010-02-08 11:00:27