我不明白之间的差别$("")和$.find("").当没有匹配但是你试图对结果做某事时(例如调用toggle()),它们的行为会有所不同.
$("").toggle(); // No error
$.find("").toggle(); // An error
$("body").find("").toggle(); // No error!
$($.find("")).toggle(); // No error
Run Code Online (Sandbox Code Playgroud)
为什么?:-)
在我的上下文中,我有一个$用于全局搜索元素的函数,当没有匹配时没有问题.现在我想允许函数只搜索指定的元素(包装在jQuery对象中).但如果我$自己通过,它仍然应该工作.
$.find("")返回一个空数组,因此当您使用[].toggle()数组时没有切换方法会引发错误.
并将其包装在jQuery中,即$ like $($.find(""))返回一个空对象,Object[]并在jQuery对象中使用toggle()不会抛出错误.
$ .find是内部CSS选择器引擎(Sizzle),函数只返回找到元素的数组.它不是jQuery实例,因此没有像切换这样的jQuery原型方法.(谢谢@dfsq)