Bạn có thể xấp xỉ một cái gì đó như thế này bằng cách duyệt qua các thuộc tính cho mỗi phần tử trong container, và nhìn thấy cho dù tên thuộc tính phù hợp với một regex cho những gì bạn đang tìm kiếm:
Ví dụ, in this jsFiddle, I am looking for li
elements with the data-media-tv
and data-media-dvd
properties.
Bạn có thể điều chỉnh regex để chỉ trả về những gì bạn muốn xem. Bạn chỉ muốn xem các phần tử có dữ liệu - media- * (như trong câu hỏi của bạn)? Here you go.
Hãy nhớ rằng không chính xác khả năng mở rộng. Vì chúng tôi đang lặp qua từng phần tử trên trang và kiểm tra từng thuộc tính duy nhất (nhưng quay lại sớm nếu được tìm thấy), điều này có thể và có thể sẽ chậm đối với các trang lớn.
Giới hạn điều này CHỈ với vùng chứa bạn muốn tìm kiếm hoặc chỉ các yếu tố bạn muốn lặp qua! Nếu bạn chạy điều này với document.body
, nó sẽ lặp qua từng phần tử trong trang, tôi sẽ không chịu trách nhiệm nếu ngôi nhà của bạn bị cháy. :)
Dưới đây là chức năng-ized:
function attrMatch(elements, regexp) {
// Iterate through all passed-in elements, return matches
var matches = elements.filter(function(li) {
var numAttr = li.attributes.length;
for(x=0;x<numAttr;x++) {
var attr = li.attributes[x];
return attr['name'].test(regexp);
}
});
return matches;
};
Trong elements
, chỉ vượt qua trong những yếu tố mà bạn muốn kiểm tra, có thể được lựa chọn thông qua $$
. Nếu bạn muốn kiểm tra tất cả các phần tử trong phần tử vùng chứa, hãy thay thế elements
bằng container
và container.getChildren()
trong mỗi trường hợp element
ở trên.
Nguồn
2012-09-18 13:50:26
Bạn có thể đăng một số ví dụ html không? – Daedalus
Có vẻ như bạn sẽ phải thêm một số thuộc tính khác để hợp nhất các thành phần. – Niemand
Việc triển khai bộ chọn CSS tuân thủ sẽ xuất * không có phần tử * vì nó không hợp lệ ... – BoltClock