jQuery:" $(variable_name)"之间的区别和" variable_name"

时间:2015-06-24 12:30:34

标签: jquery jquery-selectors

你能解释一下

之间的区别吗?
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

2 个答案:

答案 0 :(得分:2)

来自docs

  

当jQuery对象传递给$()函数时,会创建该对象的克隆。这个新的jQuery对象引用与初始DOM元素相同的DOM元素。

答案 1 :(得分:1)

除了其他答案,我想说$(someDOMElement)我,idempotent

$(someDOMElement) = $($($( ... $(someDOMElement) ... )))

任何时候你都会打电话。

这就是为什么使用$为缓存的jquery选择器变量添加前缀的好方法:

var $details_container = $(this).closest('.details');