你能解释一下
之间的区别吗?var details_container = $(this).closest('.details');
$(details_container).find('.items').slideToggle();
和
var details_container = $(this).closest('.details');
details_container.find('.items').slideToggle();
我尝试使用jQuery 1.11并且都运行正常。我认为第二个解决方案是最正确的,因为对象已经在变量中实例化,但尝试第一个我注意到浏览器控制台没有返回任何错误,一切都继续正确运行。
你能提供更多细节吗?也许jQuery足够聪明,能够理解"在这种情况下,$(details_container)
几乎等于details_container
?
答案 0 :(得分:2)
来自docs
当jQuery对象传递给
$()
函数时,会创建该对象的克隆。这个新的jQuery对象引用与初始DOM元素相同的DOM元素。
答案 1 :(得分:1)
除了其他答案,我想说$(someDOMElement)
我,idempotent:
$(someDOMElement) = $($($( ... $(someDOMElement) ... )))
任何时候你都会打电话。
这就是为什么使用$
为缓存的jquery选择器变量添加前缀的好方法:
var $details_container = $(this).closest('.details');