jQuery: как получить все классы таблиц стилей + идентификаторы в массив - PullRequest
0 голосов
/ 07 апреля 2010

Я использую редактор wysiwyg, к которому применен .css - как я могу получить все его классы в переменную, например. allClasses = ['navi', 'main']?

ТНХ

1 Ответ

3 голосов
/ 07 апреля 2010

Используйте селектор [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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...