Làm cách nào để loại bỏ tất cả các lớp CSS bằng jQuery / JavaScript?


778

Thay vì gọi riêng $("#item").removeClass()cho mỗi lớp mà một phần tử có thể có, có một hàm duy nhất có thể được gọi để loại bỏ tất cả các lớp CSS khỏi phần tử đã cho không?

Cả jQuery và JavaScript thô sẽ hoạt động.

Câu trả lời:


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

Gọi removeClasskhông có tham số sẽ loại bỏ tất cả các lớp của mặt hàng.


Bạn cũng có thể sử dụng (nhưng không nhất thiết phải được khuyến nghị, cách chính xác là cách ở trên):

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

Nếu bạn không có jQuery, thì đây sẽ là tùy chọn duy nhất của bạn:

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

7
Không phải là attr()phiên bản prop()bây giờ?
Mike

7
Gọi removeClass () không có tham số dường như không hoạt động nữa trong phiên bản 1.11.1
Vincent

1
@Vincent Có vẻ như một lỗi được giới thiệu trong jQuery vì tài liệu của họ nêu rõ điều này: 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

Vâng, tôi cũng nghi ngờ đó là một lỗi, và không phải do thiết kế. Trong khi đó, JavaScript thuần sau đây hoạt động tốt. document.getEuityById ("item"). removeAttribution ("class");
Vincent

1
Có một vấn đề với jQuery UI 1.9. Nếu removeClass () không hoạt động, hãy sử dụng removeAttr ('class')
Milad

119

Đợi, mặc định removeClass () không xóa tất cả các lớp nếu không có gì cụ thể được chỉ định? Vì thế

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

sẽ tự làm điều đó ...


3
yeah: "Loại bỏ tất cả hoặc (các) lớp được chỉ định khỏi tập hợp các phần tử phù hợp."
da5id

5
Bây giờ nó được ghi lại đúng cách: Nếu không có tên lớp nào được chỉ định trong tham số, tất cả các lớp sẽ bị xóa.
người dùng

17

Chỉ cần đặt classNamethuộc tính của phần tử DOM thực thành ''(không có gì).

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

Chỉnh sửa: Những người khác đã nói rằng chỉ gọi removeClasscông trình - Tôi đã thử nghiệm này với JQuery Sân chơi của Google: http://savedbythegoog.appspot.com/?id=ag5zYXZlZGJ5dGhlZ29vZ3ISCxIJU2F2ZWRDb2RlGIS61gEM ... và nó hoạt động. Vì vậy, bạn cũng có thể làm theo cách này:

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

13

Tất nhiên.

$('#item')[0].className = '';
// or
document.getElementById('item').className = '';

11

Heh, đã tìm kiếm một câu trả lời tương tự. Rồi nó đánh tôi.

Xóa các lớp cụ thể

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

Nói nếu phần tử có class = "class other-class"


9

Phương pháp ngắn nhất

$('#item').removeAttr('class').attr('class', '');

5

Bạn chỉ có thể thử

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

Nếu bạn phải truy cập vào phần tử đó mà không có tên lớp, ví dụ bạn phải thêm một tên lớp mới, bạn có thể làm điều đó:

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

Tôi sử dụng chức năng đó trong projet của mình để loại bỏ và thêm lớp trong trình tạo html. Chúc may mắn.


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

không còn lớp attr sẽ có mặt trong "elm".


Đây là những gì làm việc cho tôi. removeClass();đã không làm việc cho tôi.
kneidels

3

Tôi thích sử dụng js bản địa làm điều này, tin hay không!

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 = '';

cách jQuery

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

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


2

Vì không phải tất cả các phiên bản của jQuery đều được tạo như nhau, nên bạn có thể gặp phải cùng một vấn đề mà tôi đã làm có nghĩa là gọi $ ("# item"). RemoveClass (); không thực sự loại bỏ lớp. (Có lẽ là một lỗi)

Một phương pháp đáng tin cậy hơn là chỉ cần sử dụng JavaScript thô và loại bỏ hoàn toàn thuộc tính lớp.

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

1

thử với removeClass

Ví dụ :

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

Hãy sử dụng ví dụ này. Có thể bạn muốn người dùng trang web của bạn biết một trường hợp lệ hoặc nó cần được chú ý bằng cách thay đổi màu nền của trường đó. Nếu người dùng nhấn thiết lập lại thì mã của bạn chỉ nên đặt lại các trường có dữ liệu và không bận tâm lặp qua mọi trường khác trên trang của bạn.

Bộ lọc jQuery này sẽ loại bỏ lớp "highlightCriteria" chỉ cho các trường đầu vào hoặc chọn có lớp này.

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

-2

Tôi đã có vấn đề tương tự. Trong trường hợp của tôi, các phần tử bị vô hiệu hóa đã được áp dụng rằng lớp aspNetDisables và tất cả các điều khiển bị vô hiệu hóa có màu sai. Vì vậy, tôi đã sử dụng jquery để loại bỏ lớp này trên mọi thành phần / điều khiển mà tôi sẽ không làm và mọi thứ đều hoạt động và trông rất tuyệt bây giờ.

Đây là mã của tôi để loại bỏ lớp aspNetDisables:

$(document).ready(function () {

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

}); 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.