ID选择器算是jQuery选择器中最简单的一种了,这里跟踪并梳理jQuery id选择器的逻辑。
所有选择器的调用语法都是从jQuery构造函数开始的,id选择器的调用语法是:$("#x"),如果我们是jQuery的设计者,那么在jQuery构造函数中对id选择器的处理有两种思路:要么单独处理,要么与其他选择器一样处理,如果区别对待id选择器,只需要识别选择器/^#(\w)+$/即可,如果不区分于其他选择器,那么统一交给Sizzle处理,jQuery的设计者选择了第一种方案。
由于jQuery构造函数jQuery.fn.init是及其灵活的,可以接受几乎任意类型的参数组合,这里只单独分析selector参数为string类型时的逻辑:
所有选择器的调用语法都是从jQuery构造函数开始的,id选择器的调用语法是:$("#x"),如果我们是jQuery的设计者,那么在jQuery构造函数中对id选择器的处理有两种思路:要么单独处理,要么与其他选择器一样处理,如果区别对待id选择器,只需要识别选择器/^#(\w)+$/即可,如果不区分于其他选择器,那么统一交给Sizzle处理,jQuery的设计者选择了第一种方案。
由于jQuery构造函数jQuery.fn.init是及其灵活的,可以接受几乎任意类型的参数组合,这里只单独分析selector参数为string类型时的逻辑:
// Handle HTML strings
if ( typeof selector === "string" ) {
// Are we dealing with HTML string or an ID?
if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
// Assume that strings that start and end with <> are HTML and skip the regex check
match = [ null, selector, null ];
} e