[Cập nhật]
Câu trả lời ban đầu được viết trước khi jQuery 1.3, và các chức năng đã tồn tại vào thời điểm đó không đủ tự để tính toán toàn bộ chiều rộng.
Bây giờ, khi J-P khẳng định một cách chính xác, jQuery có các chức năng outerWidth và outerHeight trong đó bao gồm các border
và padding
theo mặc định, và cũng là margin
nếu đối số đầu tiên của hàm là true
[Original answer]
Phương thức width
không còn yêu cầu dimensions
plugin, b ecause nó đã được bổ sung vào jQuery Core
Những gì bạn cần làm là có được đệm, lề và biên độ rộng-giá trị đó div nói riêng và thêm chúng vào kết quả của width
phương pháp
Something như thế này:
var theDiv = $("#theDiv");
var totalWidth = theDiv.width();
totalWidth += parseInt(theDiv.css("padding-left"), 10) + parseInt(theDiv.css("padding-right"), 10); //Total Padding Width
totalWidth += parseInt(theDiv.css("margin-left"), 10) + parseInt(theDiv.css("margin-right"), 10); //Total Margin Width
totalWidth += parseInt(theDiv.css("borderLeftWidth"), 10) + parseInt(theDiv.css("borderRightWidth"), 10); //Total Border Width
Chia thành nhiều dòng để làm cho nó dễ đọc hơn
Bằng cách đó bạn sẽ luôn luôn nhận được giá trị tính toán chính xác, ngay cả khi bạn ch ange padding hoặc margin giá trị từ css
Nguồn
2008-12-08 14:30:59
Nói chung, tôi thà tin jQuery hơn là tự tính toán. Vấn đề là hàm width() không thực sự xác định nó làm gì trong trường hợp "box-sizing: border-box". Tôi chỉ thử nghiệm nó, và nó trả về chiều rộng bên trong không bao gồm padding vv Điều này có thể hoặc có thể không chính xác; những người khác nhau có thể mong đợi những thứ khác nhau. Vì vậy, các mẫu mã trên thực sự hoạt động, nhưng nó có thể không phải là cách đáng tin cậy nhất. Như được chỉ ra trong một số câu trả lời khác, tôi khuyên bạn nên sử dụng hàm outerWidth() thay thế. Nó ít nhất hứa hẹn những gì nó được cho là trong tài liệu. –
Hàm outerWidth/outerHeight không tồn tại khi tôi viết câu trả lời này. –
+1 outerWidth là thứ tôi đang tìm kiếm. – bendewey