2

ドロップダウン jquery プラグインを作成しました。これにより、通常の html 選択が非表示になり、代わりに表示するオプションとして div と多数の子 div が追加されます。

一般的な経験則に従って、次のようにプラグインを初期化しています。

$.fn.dropdown = function (options) {
    return this.each(function() {
        if (undefined === $(this).data('dropdown')) {
            var dropdown = new $.dropdown(this, options);
            $(this).data('dropdown', dropdown);
        }
    });
};

また、選択要素に指定されたクラスを置換divにコピーしています

クラスをセレクターとして使用して要素のデータを取得しようとすると、セレクターは明らかに要素配列で生成された div を返します。

これにより、div の「データが定義されていません」というエラーが発生します。

プラグインから何かを変更する必要がありますか、または初期化後に要素を選択するためにクラスの代わりに id を使用してプラグインを使用する人がデータを取得することを期待する必要がありますか?

4

1 に答える 1

0

ここには多くのオプションがありません。コンストラクター内で、インスタンス$.dropdownへのデータ参照をもう 1 つ作成するだけです。this単なるオブジェクト参照になるため、とにかく非常に安価です。

$.dropdown = function(element, options) {
    // ... newElement is what replaces original select
    newElement.data('dropdown', this);
};
于 2015-12-24T10:16:59.407 に答える