[Memperbarui]
Jawaban aslinya ditulis sebelum jQuery 1.3, dan fungsi-fungsi yang ada pada saat itu tidak cukup untuk menghitung lebar keseluruhan.
Sekarang, seperti yang dinyatakan JP dengan benar, jQuery memiliki fungsi outerWidth dan outerHeight yang mencakup border
dan padding
secara default, dan juga margin
jika argumen pertama dari fungsi tersebut adalahtrue
[Jawaban asli]
The width
Metode tidak lagi membutuhkandimensions
Plugin, karena telah ditambahkan kejQuery Core
Yang perlu Anda lakukan adalah mendapatkan nilai padding, margin, dan border edge dari div tersebut dan menambahkannya ke hasil width
metode
Sesuatu seperti ini:
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
Pisahkan menjadi beberapa baris agar lebih mudah dibaca
Dengan begitu Anda akan selalu mendapatkan nilai perhitungan yang benar, bahkan jika Anda mengubah nilai padding atau margin dari css
parseInt
bisa diubah ke+
operator untuk membuat kode lebih ringkas. Jadi,parseInt(theDiv.css("padding-left"), 10)
bisa dihidupkan+theDiv.css("padding-left")
dll ...Siapa pun yang menemukan jawaban ini harus mencatat bahwa jQuery sekarang (> = 1.3) memiliki
outerHeight
/outerWidth
fungsi untuk mengambil lebar termasuk padding / batas, misalnyaUntuk memasukkan margin juga, cukup kirimkan
true
:sumber
Sepertinya outerWidth rusak di jquery versi terbaru.
Perbedaan terjadi ketika
div luar melayang, div dalam memiliki set lebar (lebih kecil dari div luar) div dalam memiliki style = "margin: auto"
sumber
Demi kesederhanaan, saya merangkum jawaban hebat Andreas Grech di atas dalam beberapa fungsi. Bagi mereka yang menginginkan sedikit kebahagiaan cut-and-paste.
sumber
browser yang sama dapat mengembalikan string untuk lebar perbatasan, di parseInt ini akan mengembalikan NaN jadi pastikan Anda mengurai nilai ke int dengan benar.
sumber
sumber