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