ฉันจะลบสไตล์ความสูงออกจาก DIV โดยใช้ jQuery ได้อย่างไร


86

โดยค่าเริ่มต้นความสูงของ DIV จะถูกกำหนดโดยเนื้อหา

แต่ฉันลบล้างสิ่งนั้นและตั้งค่าความสูงอย่างชัดเจนด้วย jQuery:

$('div#someDiv').height(someNumberOfPixels);

ฉันจะย้อนกลับได้อย่างไร ฉันต้องการลบสไตล์ความสูงและทำให้กลับไปเป็นความสูงอัตโนมัติ / ธรรมชาติ


1
ฉันไม่สามารถทำให้มันทำงานได้เช่นกัน ดูเหมือนว่าหลังจากที่คุณตั้งค่าความสูงของ div เป็นค่าเฉพาะ (เช่น 300px หรืออะไรก็ได้) คุณจะไม่สามารถตั้งค่าความสูงกลับเป็นอัตโนมัติได้ อาจเป็นจุดบกพร่องของ jQuery
Brandon Montgomery

คำตอบ:


103

เพื่อลบความสูง:

$('div#someDiv').css('height', '');
$('div#someDiv').css('height', null);

เหมือนที่จอห์นชี้ให้ตั้งค่าความสูงเป็นauto:

$('div#someDiv').css('height', 'auto');

(ตรวจสอบด้วย jQuery 1.4)


6
คุณให้วิธีแก้ปัญหาสามวิธีฉันสามารถยืนยันการตั้งค่าความสูงเป็น "" ได้ผลไม่ทราบเกี่ยวกับวิธีอื่น ๆ
Daniel Beardsley

1
ใน jQuery 1.9 ใช้ '' แต่ใช้nullไม่ได้
Steve Tauber

1
มีความแตกต่างเล็กน้อย: 1 + 2 ช่วยให้การจัดเตรียม stlyesheet ใหม่ (หากมีการกำหนดสิ่งใดไว้ที่นั่น) 3 แทนที่ (เนื่องจากแอตทริบิวต์ที่ตั้งค่าเป็นอัตโนมัติมีลำดับความสำคัญสูงกว่า)
Frank Nocke

23
$('div#someDiv').height('auto');

ฉันชอบใช้สิ่งนี้เพราะมันสมมาตรกับวิธีที่คุณใช้อย่างชัดเจน height (val) เพื่อตั้งค่าตั้งแต่แรกและใช้งานได้กับเบราว์เซอร์


2
ซึ่งจะบังคับให้ความสูงเป็นความสูงอัตโนมัติโดยจะลบล้างกฎ CSS ที่มีอยู่ ซึ่งอาจใช้ได้ในบางกรณี แต่โดยทั่วไปแล้วอาจทำให้เกิดปัญหาได้
Bennett McElwee

@BennettMcElwee ฉันกำลังดิ้นรนกับปัญหาที่คุณอธิบายไว้ตอนนี้ ดังนั้น +1 สำหรับสิ่งนั้น
Native Coder

20

คุณสามารถลองสิ่งนี้:

$('div#someDiv').height('');

4
ที่ควรจะเป็น anwser ที่ถูกต้องเนื่องจากค่านี้ลบค่าสไตล์ css () มันมีประโยชน์อย่างยิ่งในการปรับขนาดด้วย js :) ไชโยขอบคุณ
Szymon


14

หากต้องการรีเซ็ตความสูงของ div ให้ลอง

$("#someDiv").height('auto');


คำตอบนี้ซ้ำกับคำตอบของ @ nonrectangular ซึ่งเกิดขึ้นก่อนการแก้ไขนี้
Bennett McElwee


0

เพียงเพื่อเพิ่มคำตอบที่นี่ฉันใช้ความสูงเป็นฟังก์ชันโดยมีสองตัวเลือกระบุความสูงหากน้อยกว่าความสูงของหน้าต่างหรือตั้งค่ากลับเป็นอัตโนมัติ

var windowHeight = $(window).height();
$('div#someDiv').height(function(){
    if ($(this).height() < windowHeight)
        return windowHeight;
    return 'auto';
});

ฉันต้องการจัดกึ่งกลางเนื้อหาในแนวตั้งถ้ามันเล็กกว่าความสูงของหน้าต่างหรือมิฉะนั้นก็ปล่อยให้มันเลื่อนตามธรรมชาตินี่คือสิ่งที่ฉันคิดขึ้นมา


0

ขอบคุณที่แสดงตัวอย่างทั้งหมด ฉันยังคงประสบปัญหากับหน้าติดต่อของฉันบนหน้าจอสื่อขนาดเล็กเช่นต่ำกว่า 480px หลังจากลองใช้ตัวอย่างของคุณ Bootstrap ยังคงแทรกheight: autoเก็บไว้ใส่

Element Inspector / Devtools จะแสดงความสูงใน:

element.style {

}

ในกรณีของฉันฉันเห็น: section#contact.contact-container | 303 x 743ในหน้าต่างเบราว์เซอร์

ดังนั้นการทำงานเต็มความยาวต่อไปนี้จะช่วยขจัดปัญหา:

$('section#contact.contact-container').height('');


-6
$('div#someDiv').removeAttr("height");

ฉันไม่คิดว่ามันจะใช้ได้กับสไตล์ความสูง css ที่ฝังอยู่ในแอตทริบิวต์สไตล์ aa ...
topwik

ถ้ามีอะไรที่คุณต้องการ removeAttr ( "สไตล์")
jigglyT101

วิธีนี้ใช้งานได้และเป็นตัวเลือกที่ดีที่สุดอย่างไรก็ตามหาก (ไม่เหมือนกับคำถามที่นี่) คุณกำลังพยายามลบheight="XX"แอตทริบิวต์ HTML
user56reinstatemonica8
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.