を使用する必要はありませんeach()
。jQuerycss()
関数は、ほぼすべての jQuery 関数と同様に、セット全体で機能します。
これは、新しい jQuery プラグインを作成するための、業界で認められたベスト プラクティス (少なくともそれに近い) 方法です。コードが機能しなかった理由は、グローバル関数を宣言しただけだからです。jQuery オブジェクトが関数にアクセスできるようにするには、関数を jQuery オブジェクト自体に追加する必要があります。これにより、そのオブジェクトのインスタンスと適切にペアになりthis
、現在の jQuery セットにアクセスできるようになります。これは次のように行われます。すべてをラップする関数の面白い部分は、オンラインのほとんどの jQuery プラグイン チュートリアルで読むことができるさまざまな理由で行われます。$(this)
jQuery 関数内では、this
既に jQuery の一致セットを参照しているため、実行する必要がないことに注意してください。
(function($, window, undefined) {
$.fn.rotate = function(degree) {
return this.css({
"transform": "rotate(" + degree + "deg)",
"-ms-transform": "rotate(" + degree + "deg)", /* Internet Explorer */
"-moz-transform": "rotate(" + degree + "deg)", /* Firefox */
"-webkit-transform": "rotate(" + degree + "deg)", /* Safari and Chrome */
"-o-transform": "rotate(" + degree + "deg)" /* Opera */
});
};
$.fn.unrotate = function() {
return this.css({
"transform": "",
"-ms-transform": "", /* Internet Explorer */
"-moz-transform": "", /* Firefox */
"-webkit-transform": "", /* Safari and Chrome */
"-o-transform": "" /* Opera */
});
};
}(jQuery, window));
unrotate
cssも簡単に削除できる機能を追加しました。
pimvdbtransform
によると、jQuery 1.8 では自動的にプレフィックスが試行されるため、そのバージョン以降を使用している場合はプロパティ以外は必要ないかもしれません。