Используйте селектор [id]
или [class]
. Это выбирает все элементы, для которых этот атрибут определен. Затем просто позвоните им attr('id')
и получите идентификатор.
(function($) {
$.fn.allAttributes = function(attrName) {
var selector = "[{attr}]".replace("{attr}", attrName);
var attributes = $(selector, this).map(function() {
return $(this).attr(attrName).split(' ');
});
attributes = $.unique(attributes);
return attributes;
};
})(jQuery);
Это плагин jQuery, который делает именно это. Пример использования:
var ids = $("body").allAttributes("id");
var classes = $("body").allAttributes("class");
Некоторые заметки:
Функция вызывает split(' ')
, поскольку атрибут class
может иметь несколько классов CSS, разделенных строкой, такой как "main navi footer"
. Это разделяет их на отдельные предметы. $.unique
вызывается для массива в конце, потому что имена классов могли повторяться в нескольких местах, и я предполагаю, что вам не нужны дубликаты.
Пример здесь: http://jsfiddle.net/G4Pwc/