2011-12-06 29 views
6

Sử dụng javascript vani hoặc nguyên mẫu có thể ai đó chỉ cho tôi cách tôi có thể chạy kiểm tra xem lớp học có tồn tại không? Ví dụ: tôi đang thêm một lớp được gọi là hideIt với mã này:Kiểm tra xem một lớp CSS tồn tại mà không có jQuery

var overlay = document.getElementById("overlay_modal"); 
overlay.className += " hideIt"; 

Tôi cũng cần một tập lệnh sau này có thể kiểm tra xem hideIt có tồn tại hay không. Tôi đã thử những thứ như:

if (overlay.className == "hideIt") 

Nhưng điều đó không tốt. Bất kỳ ý tưởng?

+0

Tại sao điều này có được xuống bỏ phiếu? – Zac

Trả lời

6

Sử dụng regexp. \b sẽ đối sánh các ranh giới từ (một dấu cách, ký tự dòng mới, ký tự dấu chấm câu hoặc kết thúc chuỗi).

var overlay = document.getElementById("overlay_modal"); 
if (overlay.className.match(/\bhideIt\b/)) 
{ 
    // frob a widget 
} 
+0

Cảm ơn bạn điều này hoạt động thực sự tuyệt vời! – Zac

+0

Câu trả lời tốt nhất, sạch nhất và được hỗ trợ rộng rãi nhất! :) – MRVDOG

4

Bạn có thể sử dụng getElementsByClassName(), mặc dù điều này không được hỗ trợ trong tất cả trình duyệt (không phải trong IE < 9):

if (!document.getElementsByClassName('classname').length){ 
    // class name does not exist in the document 
} 

else { 
    // class exists in the document 
} 

Bạn có thể, tùy thuộc vào yêu cầu tương thích trình duyệt, sử dụng querySelectorAll():

if (document.querySelectorAll('#overlay_modal.hideIt')) { 
    // the element with id of overlay_modal exists and has the class-name 'hideIt' 
} 

Tham chiếu:

+0

Tôi vẫn nghĩ [sử dụng regexp trên 'className' của phần tử] (http://stackoverflow.com/a/8405435/139010) là cách tiếp cận tốt nhất trong trường hợp này, vì chúng đã có tham chiếu đến chính phần tử đó . Hoạt động trong tất cả các trình duyệt, không cần phát hiện tính năng hoặc shims. –

+1

Tôi có xu hướng đồng ý, nhưng kể từ khi bạn đã bao phủ góc đó, dường như điều đó không đúng bao gồm khía cạnh đó trong câu trả lời của riêng tôi. Tôi đã không nói rằng một trong số đó là những cách tốt nhất *, nhưng thay vào đó trình bày các lựa chọn thay thế cho những người đã đăng. –

3
var id = document.getElementById("id"); 
var classes = id.className.split(" "); 
if(classes.indexOf("class_name") == -1) 
{ 
} 
+1

Tôi nghĩ bạn có nghĩa là '! == -1'. –

3

Bởi vì câu hỏi yêu cầu nó ở đây cũng là the Prototype way,

if (overlay.hasClassName('hideIt')) 
+0

cảm ơn! Đó là tốt để biết – Zac

Các vấn đề liên quan