2

是否有(可能未记录的)占位符$.noop用于 jQuery 连接?

要在以下内容中使用:

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

我已经尝试了很多并最终得到了这个:

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

但也许jQuery核心中已经有这样的功能了?

4

1 回答 1

1

选项一:

使用$.fn.splice. 它在那里并且一直存在,但它也没有记录(因此它可能在未来不存在),不可读,并且不需要任何参数。

选项二:

$.fn.noop = function(){return this}. 可靠、可读、可预测、快速。喜欢#1 的唯一原因是开发时间。

选项三(首选):使用条件插件插件,这是需要可链接无操作的唯一原因,例如Ben Alman 的 IFF 插件(或自己编写)。

优点:转弯

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

进入:

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

也就是说,它比 #2 更具可读性,而且您不仅限于一次通话。iff只要您正确展开堆栈,您甚至可以遍历或嵌套您的条件。

缺点:它是一个插件,你需要获取它;它要求您在对空集合进行操作时调用的方法是无操作的。所有标准的 jQuery 函数(除了add)都是。

于 2013-01-21T12:31:36.450 回答