2011-10-26 56 views
3

我試圖從一個元素中獲取父元素的寬度。要做到這一點我使用:jQuery .width()和css('width')返回無效值

parent = $("#"+id).parent().attr("id"); 
parentWidth = $('#'+parent).width(); 

我也試過:

parentWidth = $('#'+parent).css('width'); 

起初我用

$('#'+id).parent().width(); 

這個沒有工作無論是。

父變量已正確設置,但是,父div的寬度是90%,.width()返回90,而.css('width')返回90px。在我的.css widht設置爲90%時,我也嘗試將它添加到元素本身的樣式標記中。

<div id="tabs" style="height:90%;width:90%;"> 
在CSS文件

#tabs{ 
height:90%; 
width:90%; 
position:absolute; 
z-index:10; 
overflow:hidden; 
} 

我不斷收到90作爲返回值。我究竟做錯了什麼? 謝謝

這是我正在談論的頁面:http://www.amsterdamslyceum.lelie.demodomein.com/index.php 不介意數據庫錯誤,沒有在主機上設置數據庫,但我剛開始開發。

+0

你可以用'$('#'+ id).parent();'來設置「parent」,並且不需要像這樣通過id來找到它。 – Pointy

+3

如果'#tabs' div的父元素的寬度爲'100px',那麼'width()'和'css()'返回'90px'是合法的。你確定不是這樣嗎? –

+0

#tabs實際上是父級,它幾乎覆蓋整個網頁(90%),所以CSS中的寬度值對我來說看起來很好 – jewetnit

回答

0

起初我用

$('#'.id).parent().width(); 

$("#".id)可能是你的問題。嘗試$("#" + id).parent().width()

其他想法:可能#tabs有額外的CSS樣式信息?

+0

噢,對不起,我在第一篇文章中使用了一個加號,錯字,我現在會更正它,謝謝。 – jewetnit

+0

怎麼樣的CSS本身?任何爲#tabs? – doctorless

+0

#tabs { \t身高:90%; \t寬度:90%; \t position:absolute; \t z-index:10; \t溢出:隱藏; } – jewetnit

3

$('#'.id).parent().width(); 必須 $('#' + id).parent().width();

你檢查父?首先在瀏覽控制檯(FF和Chrome)檢查這個代碼返回要 $('#' + id).parent();

+0

父母的ID返回正常,如果您訪問鏈接,您會看到我放置警報打印父母div名稱及其維度。感謝您的回覆 – jewetnit

0

文檔http://api.jquery.com/ready/說,這父:

當使用腳本依賴CSS樣式屬性的值, 在引用腳本之前引用外部樣式表或嵌入樣式 元素很重要。

您的腳本似乎放在樣式表之前。我猜測你的代碼運行時,樣式還沒有被加載。

+0

確實將函數調用置於$(「#tabs」)。ready()工作中?因爲我已經想到了這個,但它並不適合我,但也許我在某個地方搞砸了。 – jewetnit

+0

我不知道。嘗試使用'load'或僅將樣式表下方的鏈接腳本移動。 – Tetaxa

+0

實際上函數是在樣式表加載後調用的,我會在第二次嘗試load()函數時,需要重啓我的筆記本電腦。 – jewetnit

0

例如我試試這個: $('#tabs-1').parent().width()

,它工作正常

0

嘗試把你的腳本上

$(document).ready(function() {YOUR CODE HERE});

+0

已經嘗試過,沒有工作:/ – jewetnit

0

我碰到了同樣的問題來了,我發現,這是因爲您可能會使用其他jQuery插件或函數來修改html結構(如使用滑塊或製表符等)。