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

jQuery: difference between "$(variable_name)" and "variable_name"

你能解释一下

之间有什么区别吗
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 和两个 运行 都正确。我认为第二个解决方案是最正确的,因为对象已经在变量中实例化,但尝试第一个时我注意到浏览器控制台没有 return 任何错误并且一切继续 运行 正确。

你能提供更多细节吗?也许 jQuery 足够聪明 "understand" 在这种情况下 $(details_container) 几乎等于 details_container ?

来自docs

When a jQuery object is passed to the $() function, a clone of the object is created. This new jQuery object references the same DOM elements as the initial one.

除了其他的答案,我想说的是 $(someDOMElement)i, idempotent:

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

无论您调用多少次。

这就是为什么在缓存 jquery 选择器变量前加上前缀 $ 的原因:

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