1
function classChanger(path,changeClass,duration){
    $(path).removeClass(changeClass);
    $(this).addClass(changeClass);
)};

$('.flightDetails .option').classChanger('.flightDetails .option','selected',300);

再利用可能な関数を作成しようとしています。コンソール ログ: TypeError: $(".flightDetails .option").classChanger は関数ではありません

あなたの助けと時間を感謝します:)

4

1 に答える 1

5

classChangerjQuery プロトタイプで宣言する必要があります。

$.fn.classChanger = function(path, changeClass, duration) {
    $(path).removeClass(changeClass);
    return this.addClass(changeClass);
};

詳細については、jQuery プラグイン オーサリング ガイドを参照してください。


更新:コメントで指摘されているようにpath、セレクターが常に同一であることを意図している場合は、path完全に放棄し、this全体で使用する必要があります。

何をしようとしているのかを正確に指定していないので、クラスを削除し、duration指定されたのを待ってからクラスを再度追加することを想定しています。その場合は、サンプル コードを次に示します。

$.fn.classChanger = function(changeClass, duration) {
    var $this = this;

    setTimeout(function() {
        $this.addClass(changeClass);
    }, duration);

    return this.removeClass(changeClass);
};

$('.flightDetails .option').classChanger('selected', 300);

これがフィドルです:http://jsfiddle.net/ur7SN/

于 2012-07-27T16:24:01.463 に答える