是否有一个(可能未记录的)占位符,如$.noop
用于jQuery连接?
用于类似以下内容的内容:
$('selector')[true ? 'method' : '<function that does nothing>']().doSomething();
我尝试了很多,最终得到这个:
$.fn.noop = function(){ return this; };
但也许jQuery核心中已经有这样的函数?
选项一:
使用 $.fn.splice
.它在那里并且始终存在,但它也没有记录(因此将来可能不存在),不可读,并且不需要任何参数。
选项二:
$.fn.noop = function(){return this}
.可靠、可读、可预测、快速。关于更喜欢#1的唯一原因是开发时间。
选项三(首选):使用插件作为条件,这是想要可链接的无操作的唯一原因,例如Ben Alman的Iff插件(或编写自己的插件)。
优点:转弯
... [condition?'method':'noop']() ...
到:
... .iff(condition).method().end() ...
也就是说,它比#2更具可读性,并且您不限于一次调用。您甚至可以在iff
内遍历或嵌套条件,只要您正确展开堆栈即可。
缺点:它是一个插件,你需要获取它;它要求你在空集合上操作时调用的方法是无操作的。所有标准的jQuery函数(除了add
)都是。