2011-08-25 23 views

Trả lời

114

Nó thực sự rất giống với jQuery:

document.getElementsByClassName('class1 class2') 

MDN Doc getElementsByClassName

+13

và wow là tôi ngu ngốc hoặc những gì? –

+26

Tôi nói những gì bạn bè của tôi, tất cả mọi người có một cái gì đó để tìm hiểu. – Joe

11

querySelectorAll với selectors lớp tiêu chuẩn cũng làm cho việc này.

document.querySelectorAll('.class1.class2'); 
+1

Điều đó không có tác dụng, cần phải là 'document.querySelectorAll ('. Class1, .class2');' – bazzlebrush

+0

@bazzlebrush bộ chọn của bạn sẽ nắm bắt các phần tử bằng '.class1' OR '.class2', trong khi cái ở trên sẽ chỉ chụp các phần tử với * cả hai * lớp và thực tế làm việc. Xem đầu ra giao diện điều khiển của thử nghiệm này: https://jsfiddle.net/0ph1p9p2/ – filoxo

+0

Ok, xấu của tôi, tôi hiểu lầm những gì OP muốn làm. Nhưng IMO một trường hợp sử dụng điển hình hơn là muốn chọn các phần tử có cả hai lớp hoặc cả hai, trong trường hợp đó ví dụ của tôi là những gì bạn muốn. – bazzlebrush

0

câu trả lời của @bazzlebrush thực sự và nhận xét của @filoxo đã giúp tôi rất nhiều.

tôi cần phải tìm ra các yếu tố mà lớp có thể là "zA yo" HOẶC "zA Ze"

Sử dụng jquery đầu tiên tôi chọn công ty mẹ của các yếu tố mong muốn:

(một div với lớp bắt đầu bằng 'abc' và style =! 'display: none')

var tom = $('div[class^="abc"][style!="display: none;"]')[0];     

sau đó những đứa trẻ mong muốn của nguyên tố đó:

var ax = tom.querySelectorAll('.zA.yO, .zA.zE'); 

hoạt động hoàn hảo! lưu ý bạn không phải làm document.querySelector bạn có thể như trên vượt qua trong một đối tượng được chọn trước.

2

Như @filoxo đã nói, bạn có thể sử dụng document.querySelectorAll.

Nếu bạn biết rằng chỉ có một phần tử với các lớp học mà bạn đang tìm kiếm, hoặc bạn chỉ quan tâm đến một trong những đầu tiên, bạn có thể sử dụng:

document.querySelector('.class1.class2'); 

BTW, trong khi .class1.class2 chỉ ra một yếu tố với cả lớp, .class1 .class2 (chú ý khoảng trắng) chỉ ra một hệ thống phân cấp - và phần tử với lớp class2 mà là bên en phần tử với lớp class1:

<div class='class1'> 
    <div> 
    <div class='class2'> 
     : 
     : 

Và nếu bạn muốn để buộc lấy một đứa trẻ trực tiếp, sử dụng > dấu (.class1 > .class2):

<div class='class1'> 
    <div class='class2'> 
    : 
    : 

Đối với toàn bộ thông tin về selectors:
https://www.w3schools.com/jquery/jquery_ref_selectors.asp

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