วิธีลบคลาส CSS ทั้งหมดโดยใช้ jQuery / JavaScript


778

แทนที่จะเรียกเป็นรายบุคคล$("#item").removeClass()สำหรับแต่ละชั้นเรียนอาจมีฟังก์ชั่นเดียวซึ่งสามารถเรียกได้ว่าจะลบคลาส CSS ทั้งหมดออกจากองค์ประกอบที่กำหนดหรือไม่

ทั้ง jQuery และ raw JavaScript จะใช้งานได้

คำตอบ:


1509
$("#item").removeClass();

การโทรremoveClassโดยไม่มีพารามิเตอร์จะลบคลาสทั้งหมดของรายการ


คุณยังสามารถใช้ (แต่ไม่แนะนำให้ใช้วิธีที่ถูกต้องคือวิธีการด้านบน):

$("#item").removeAttr('class');
$("#item").attr('class', '');
$('#item')[0].className = '';

หากคุณไม่มี jQuery นี่จะเป็นตัวเลือกเดียวของคุณ:

document.getElementById('item').className = '';

7
ไม่ควรเป็นattr()เวอร์ชั่นprop()ตอนนี้หรือ
Mike

7
การเรียก RemoveClass () โดยไม่มีพารามิเตอร์ดูเหมือนจะไม่ทำงานอีกต่อไปในรุ่น 1.11.1
Vincent

1
@Vincent ดูเหมือนว่าข้อผิดพลาดที่นำมาใช้ใน jQuery เนื่องจากเอกสารของพวกเขาระบุไว้อย่างชัดเจนว่า: If a class name is included as a parameter, then only that class will be removed from the set of matched elements. If no class names are specified in the parameter, all classes will be removed. api.jquery.com/removeclass
AtheistP3ace

ใช่ฉันยังสงสัยว่ามันเป็นข้อบกพร่องและไม่ใช่จากการออกแบบ ในระหว่างนี้ JavaScript บริสุทธิ์ต่อไปนี้ใช้งานได้ดี document.getElementById ( "รายการ") removeAttribute ( "ชั้น.");
Vincent

1
มีปัญหากับ jQuery UI 1.9 ถ้า removeClass () ไม่ทำงานให้ใช้ removeAttr ('class')
Milad

119

หยุดทำงานไม่ได้ลบ defaultClass () เพื่อลบคลาสทั้งหมดหากไม่มีการระบุเฉพาะ ดังนั้น

$("#item").removeClass();

จะทำมันเอง ...


3
ใช่: "ลบคลาสทั้งหมดหรือคลาสที่ระบุออกจากชุดขององค์ประกอบที่ตรงกัน"
da5id

5
ตอนนี้เอกสารถูกต้อง: หากไม่มีการระบุชื่อคลาสในพารามิเตอร์คลาสทั้งหมดจะถูกลบออก
ผู้ใช้

17

เพียงตั้งค่าclassNameแอตทริบิวต์ขององค์ประกอบ DOM จริงเป็น''(ไม่มีอะไร)

$('#item')[0].className = ''; // the real DOM element is at [0]

แก้ไข:คนอื่นพูดว่าเพิ่งเรียกremoveClassงาน - ฉันทดสอบสิ่งนี้ด้วย Google JQuery Playground: http://savedbythegoog.appspot.com/?id=ag5zYXZlZGJ5dGhlZ29vZ3ISCxIJU2F2ZWRDb2RlGIS61gEM ... และมันใช้งานได้ ดังนั้นคุณสามารถทำได้ด้วยวิธีนี้:

$("#item").removeClass();


11

เฮ้มาค้นหาคำตอบที่คล้ายกัน จากนั้นมันก็ตีฉัน

ลบคลาสเฉพาะ

$('.class').removeClass('class');

พูดว่าองค์ประกอบมี class = "class another-class"



5

คุณสามารถลอง

$(document).ready(function() {
   $('body').find('#item').removeClass();
});

หากคุณต้องเข้าถึงองค์ประกอบนั้นโดยไม่มีชื่อคลาสตัวอย่างเช่นคุณต้องเพิ่มชื่อคลาสใหม่คุณสามารถทำได้:

$(document).ready(function() {
   $('body').find('#item').removeClass().addClass('class-name');
});

ฉันใช้ฟังก์ชั่นนั้นใน projet ของฉันเพื่อลบและเพิ่มคลาสในเครื่องมือสร้าง html โชคดี.


4
$('#elm').removeAttr('class');

ไม่มีคลาส attr จะไม่มีอยู่ใน "elm"


นี่คือสิ่งที่ได้ผลสำหรับฉัน removeClass();ไม่ได้ผลสำหรับฉัน
คุกเข่า

3

ฉันชอบใช้ js ดั้งเดิมทำสิ่งนี้เชื่อหรือไม่!

1

// remove all items all class  
const items = document.querySelectorAll('item');
for (let i = 0; i < items.length; i++) {
    items[i].className = '';
}

2

// only remove all class of first item
const item1 = document.querySelector('item');
item1.className = '';

วิธี jQuery

  1. $("#item").removeClass();

  2. $("#item").removeClass("class1 ... classn");


2

เนื่องจากไม่ใช่ทุกรุ่นของ jQuery ถูกสร้างขึ้นเท่ากันคุณอาจพบปัญหาเดียวกันกับที่ฉันทำซึ่งหมายถึงการเรียก $ ("# item") removeClass (); ไม่ได้ลบคลาส (อาจเป็นข้อผิดพลาด)

วิธีการที่เชื่อถือได้มากขึ้นคือการใช้ JavaScript แบบดิบและลบแอตทริบิวต์ class ทั้งหมด

document.getElementById("item").removeAttribute("class");

1

ลองด้วย removeClass

ตัวอย่างเช่น :

var nameClass=document.getElementsByClassName("clase1");
console.log("after", nameClass[0]);
$(".clase1").removeClass();
var nameClass=document.getElementsByClassName("clase1");
console.log("before", nameClass[0]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="clase1">I am Div with class="clase1"</div>


1

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

ตัวกรอง jQuery นี้จะลบคลาส "highlightCriteria" สำหรับฟิลด์อินพุตหรือเลือกที่มีคลาสนี้เท่านั้น

$form.find('input,select').filter(function () {
    if((!!this.value) && (!!this.name)) {
        $("#"+this.id).removeClass("highlightCriteria");
    }
});

-2

ฉันมีปัญหาที่คล้ายกัน ในกรณีของฉันเกี่ยวกับองค์ประกอบที่พิการถูกนำไปใช้ที่ชั้น aspNetDisabled และการควบคุมการปิดการใช้งานทั้งหมดมีสีผิด ดังนั้นฉันใช้ jquery เพื่อลบคลาสนี้ในทุกองค์ประกอบ / การควบคุมที่ฉันจะไม่ทำงานและทุกอย่างทำงานได้และดูดีในตอนนี้

นี่คือรหัสของฉันสำหรับการลบคลาส aspNetDisabled:

$(document).ready(function () {

    $("span").removeClass("aspNetDisabled");
    $("select").removeClass("aspNetDisabled");
    $("input").removeClass("aspNetDisabled");

}); 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.