2

$.noopjQuery連結で使用するような(おそらく文書化されていない)プレースホルダーはありますか?

次のようなもので使用するには:

$('selector')[true ? 'method' : '<function that does nothing>']().doSomething();

私は多くのことを試しましたが、これで終わりました:

$.fn.noop = function(){ return this; };

しかし、jQueryコアにはすでにそのような機能があるのでしょうか?

4

1 に答える 1

1

オプション 1:

を使用し$.fn.spliceます。そこにあり、常に存在しますが、文書化されておらず (したがって、将来存在しない可能性があります)、判読不能であり、引数がないことを必要とします。

オプション 2:

$.fn.noop = function(){return this}. 信頼性が高く、読みやすく、予測可能で、高速です。#1を好む唯一の理由は、開発時間です。

オプション 3 (推奨): 条件付きのプラグインを使用します。これは、Ben Alman によるIff プラグイン(または独自のプラグインを作成)など、連鎖可能な no-op を望む唯一の理由です。

長所:ターン

 ... [condition?'method':'noop']() ...

の中へ:

 ... .iff(condition).method().end() ...

つまり、#2 よりも読みやすく、呼び出しが 1 つに制限されていません。iffスタックを適切にアンワインドする限り、条件内をトラバースしたりネストしたりすることもできます。

短所: これはプラグインであり、取得する必要があります。空のコレクションを操作するときは、呼び出すメソッドがノーオペレーションである必要があります。すべての標準 jQuery 関数 (を除くadd) は.

于 2013-01-21T12:31:36.450 に答える