为什么$取得的对象要设计成数组的形式?
jquery内部采用了一种“类数组对象”的方式作为存储结构,既可以像对象一样处理jQuery操作,也可以像数组一样使用push、pop、shift、sort、each、map等类数组的方法操作jquery对象。
2.Sizzle选择器
支持九种方式的处理:
// 1.$(document) // 2.$(‘<div>’) // 3.$(‘div’) // 4.$(‘#test’) // 5.$(function(){}) // 6.$("input:radio", document.forms[0]); // 7.$(‘input’, $(‘div’)) // 8.$() // 9.$("<div>", { // "class": "test", // text: "Click me!", // click: function(){ $(this).toggleClass("test"); } // }).appendTo("body"); // 10$($(‘.test’))
sizzle主要是针对于复杂选择器表达式,且在不支持querySelectorAll情况下,有一个对象用来记录跟选择器相关的属性以及操作,sizzle查找的顺序是从右到左进行匹配的。类似$(‘div a’)这样的匹配,先搜寻页面中所有的a标签,再往后判定它的父节点是否为div,一层一层向上过滤。:
relative = {
“>”: { dir: “parentNode”, first: true },
” “: { dir: “parentNode” },
“+”: { dir: “previousSibling”, first: true },
“~”: { dir: “previousSibling” }
}
一般对于伪类来说,只能从左到右进行匹配,而从性能触发,采取从右到左。