我对jQuery核心有疑问.从文档和几本书我得到:
var obj = $("div");
Run Code Online (Sandbox Code Playgroud)
使用其他方法返回包装器对象AKA所选DOM元素的集合.(请随意纠正我可能说的错误).我已经阅读了jQuery函数$()返回一个包装器对象,还是它真的返回了jQuery的副本以及包装元素的集合?
任何帮助是极大的赞赏.
干杯
"包裹"一词对我来说有点误导.jQuery将对提供的选择器匹配的元素的引用保持为调用返回的jQuery实例的数字属性,因此:
var allTheDivs = $('div');
Run Code Online (Sandbox Code Playgroud)
返回一个jQuery对象,引用文档中的所有div,并且:
allTheDivs[0]; // or allTheDivs['0'];
Run Code Online (Sandbox Code Playgroud)
是对第一个的引用.所以,如果你这样做:
allTheDivs.hide();
Run Code Online (Sandbox Code Playgroud)
它调用jQuery实例allTheDivs的hide方法,它循环遍历所有引用的元素并隐藏它们.但不要尝试:
allTheDivs['0'].hide()
Run Code Online (Sandbox Code Playgroud)
因为那会尝试在DOM元素上调用hide,这可能不会存在,因此会在错误中恢复.
它返回一个jQuery对象的实例,用你的CSS选择器包装你选择的元素(在这种情况下,一个jQuery对象包装文档中的所有div).
jQuery不是"复制"的东西 - 它是围绕DOM中的元素的行为.
var jqDivs = $("div");
var jqButtons = $("button");
var jqSubmitButton = $("button#submit");
Run Code Online (Sandbox Code Playgroud)
这3个变量引用了3个不同的对象.所有这些都实现了相同的jQuery行为,但是它们在不同的元素上实现.jqDivs.hide()将隐藏的div - jqButtons.hide()将隐藏的按钮,jqSubmitButton.hide()将只隐藏与ID按钮=提交.