0

私は現在、カスタム選択メニューの作成に取り組んでおり、ヒットしたつまずきのブロックの 1 つは、デフォルトの選択要素と新しい要素の間のクラスの移行です。私が試した1つの方法は..

$(document).ready(function() {
    $("select").each(function() {
        var class = "select";

        if ($(this).attr("class").length > 0) {
            class = class + " " + $(this).attr("class");
        }
    });
});

ご覧のとおり、検出されたインスタンスの量ではなく、検出された文字の量を測定しているだけです。それはおそらく最も簡単なことの1つですが、私はそれを理解することができないようです. 私に何ができるか考えている人はいますか?

指摘したいのは、クラス名が何であるかは関係ありません。それは絶対に任意の名前である可能性があるためです。たとえば、右にフロートしたいカスタム選択が1つある場合は、単に次のように記述しますその後<select class="right"></select>class=rightスクリプトによって記録され、新しい選択に移動します。

4

2 に答える 2

1

試す

$(document).ready(function () {
    var classNames = [];
    $("select").each(function () {
        var classes = (this.className || '').split(/\s+/);
        $.each(classes, function (i, v) {
            if ($.inArray(v, classNames) == -1) {
                classNames.push(v)
            }
        })
    });
    console.log(classNames)
});

デモ:フィドル

于 2013-09-04T13:22:42.763 に答える
1

この単語classは予約語です。のように別のものに変更すると、classname動作するはずです。

$(document).ready(function() {
    $("select").each(function() {
        var classname = "select";

        if ($(this).attr("class").length > 0) {
            classname = classname + " " + $(this).attr("class");
        }
        console.log(classname);
    });
});
于 2013-09-04T13:25:53.700 に答える