1

サイトのパフォーマンスをあまり気にせず、非常にアンチパフォーマンスな CSS を作成した他の誰かの後に eshop を与えられました。そのような巨大な CSS ファイル (eshop のものでさえありません) に対してクロスブラウザーで適切に動作する CSS minifyer がないため、クリアすることにしました。 CSS を自分で作成するには、ページで使用されるクラスの完全なリストが必要です - jQuery のページで使用されるクラスの完全なリストを取得するにはどうすればよいですか?

(たとえば、コンソールにループ書き込みできるようなものです...そして、完全な解決策よりもjQueryで行う方法を探しています(そのようなことでは、サードサイドxを信じることはありません))

4

8 に答える 8

3

class 属性を持つ要素のみをチェックし、重複しないように値を分割します

var classes = [];
$('[class]').each(function(){
    $.each($(this).attr('class').split(' '),function(i,className) { 
        if (className.length && $.inArray(className, classes) === -1) {
            classes.push(className);
        }    
    });
});
console.log(classes.join(','));

EDIT jQueryオブジェクトの代わりに配列を反復処理するように修正

于 2013-08-07T08:58:43.307 に答える
2
$(function(){

    var result = [];    

    $('*').each(function(k, v){

        var classNames = $(v).prop('class');

        if(classNames){

            var classes = classNames.split(' ');

            $.each(classes, function(k2, v2){

                if($.inArray(v2, result) === -1)
                    result.push(v2);
            });
        }

    });

    console.log(result);

});

http://jsfiddle.net/ZQZ8j/1/

于 2013-08-07T08:42:03.550 に答える
0

未使用の CSS セレクターを見つけるFirefox 拡張機能の Dust-Meを使用できると思います。

于 2013-08-07T08:41:33.253 に答える
0

jQueryには属性セレクターがあります

$("*[class]").each(function () {
    var classNames = this.attr("class");
    // Split classNames as shown in other answers
});

属性を持つ要素を選択classするため、未定義のチェックを追加する必要はありません。

于 2013-08-07T08:54:31.300 に答える