2011-07-12 60 views
1

我正在使用jquery,並且正在嘗試創建幻燈片。將圖像附加到瀏覽器之前,jquery.width()返回0零位

在我追加圖片之前,我會知道圖片的寬度。 (所以我使用。寬度() jquery和.attr(「寬度」)。

代碼如下:

var attr_href = $next.attr('href'); /*returns the href of the image*/ 
var $item = $('<img src="'+attr_href+'" />'); 

//$item contains the image, the image is not displayed to the browser yet!!! 

var itemWidth = $item.width(); 
alert(itemWidth); 
// ---> returns zero 0 in Mozilla and in IE 

var itemWidth2 = $item.attr("width"); 
alert(itemWidth2); 
//In Mozilla, the first time it returns 0.After the image is loaded, it returns the right Width 
//In IE, always returns 0 zero !!! 

//Now i have to append the photo and i have to use the right Width of the image!!! 
var final_img = $('<img src="'+attr_href+'" width="'+itemWidth+'"/>'); 
$('.SlideShow').append(final_img); 

所以,我試圖用.load()和我所做的:

var attr_href = $next.attr('href'); /*returns the href of the image*/ 
var $item = $('<img src="'+attr_href+'" />'); 

//$item contains the image, the image is not displayed to the browser yet!!! 

$item.load(function () { 
    var WidthAfterLoading = $item.attr("width"); 
    var WidthAfterLoading2 = $item.width(); 

}); 

alert(WidthAfterLoading); //returns "undefined" in both IE and Mozilla 
alert(WidthAfterLoading2); //returns "undefined" in both IE and Mozilla 

所以,在我追加圖像到瀏覽器,我會知道圖像的正確寬度。 但我得到零(0)和未定義。

有沒有其他辦法,爲了取圖像的右邊寬度?

感謝,提前

+0

沒有'width'屬性 – Phil

+0

所以之前的元素到DOM連接,.attr(「寬「) 是錯的? – programmer

+0

我道歉,我在想''item'是'a'標籤。 – Phil

回答

7

啊,我以前有同樣的問題。

<img id="someImage"></img> 

然後在你的JQuery

$("#someImage").attr("src", "url/to/img").load(function() { 
    var width = $(this).width(); 
    // do stuff! 
}); 

當然的fiddle

+0

謝謝,我仍然得到0零。即使當圖像加載時,我再次得到零。我不知道我該怎麼做... – programmer

+1

嘗試在小提琴上的代碼,並將其粘貼在這裏,所以我們可以採取看看發生了什麼:) – vinceh

0

這是因爲元素不重視DOM樹
嘗試調用.WIDTH()