カスタム jquery プラグインを改善しようとしています。以前ここで質問したことがあります。以前の問題は解決されました。ここで、プラグインをより柔軟にしたいと考えています。したがって、ハードコーディングされた古いクラスに依存する代わりに、値に基づいてクラスを動的に変更する選択ボックスの値の配列に依存するようにしようとしています。私がこれを行っている理由は、選択オプションをクリックする前にクラスが存在しないことがあります。場合によっては、他のセレクターでも機能します。
私が達成しようとしていることをよりよく言うには:
セレクターに選択ボックス値のいずれかのクラスがある場合、このクラスを削除し、最後に選択された値に基づいて新しいクラスを追加します。
だからここに最新のコードがあります:
$.fn.classSwitcher = function(options) {
var baseOptions = {
classTarget: 'body',
newClass: ''
};
var options = $.extend(baseOptions, options);
var allVals = [];
return this.find('option').each(function() {
//retrieve all select box values
allVals.push( $(this).val() );
$(this).click(function() {
var t = $(this);
var newClass = (options.newClass) ? options.newClass : t.val();
// Is it okay to do hasClass to array values?
if ($(options.classTarget).hasClass(allVals)) {
$(options.classTarget).removeClass(allVals).addClass(newClass);
}
// problem here I guess, can not update the old class with the one
allVals = newClass;
$.cookie('cookieNewClass', newClass, { expires: 1 });
//alert('New Class: ' + $.cookie('cookieNewClass')); // produced expected new class
//alert(allVals); // produced expected new classes
});
});
};
クラスが追加されますが、前の質問のように、対象のクラスを更新して新しいクラスに置き換えることはできません。他の問題については、コード内のコメントも参照してください。
それが解決されている場合は、気軽にdupとしてマークしてください:)
どんなヒントでも大歓迎です。ありがとう