這是不太實際的或有用的,但我只是寫了這個功能,通過克隆創建了一個「沙盒」父母並將其放置在屏幕外的dom中。
var getStyle = function($parent, $element, props){
if(typeof props == 'string'){props = [props];}
var $sandbox = $parent.clone().css({
position: 'absolute',
display: 'inline-block',
width: $parent.width(),
height: $parent.height(),
top: -1000,
left: -1000
});
$('body').append($sandbox);
$sandbox.append($element);
var result = {};
for(var i=0;i<props.length;i++){
var p = props[i];
if(p == 'width'){ result[p] = $element.width(); }
else if (p == 'height'){ result[p] = $element.height(); }
else{ result[p] = $element.css(p); }
}
$sandbox.remove();
return result;
}
console.log(
getStyle(
$('#name'), //parent
$('<div>helo</div>'), //new elemen
['width','height','color'] //properties to fetch
)
);
http://jsfiddle.net/beXyM/1/
放眼於未來母公司的寬度? –
不要認爲這是可能的。例如,父元素可能具有類「container」,而css規則具有'.container> div {width:10px; }'你不知道,直到你添加它的元素將是10個像素的寬度。更好的方法是添加元素,獲取css值並刪除元素。 –
寬度總是根據div的內容而變化。我不想刪除元素,但我希望只使用臨時'var'。我想我只需要將它們分配爲'this.'對象,並在所有內容添加完畢後用內部函數調用它們的寬度。多謝你們。 –