如果是從左到右,我們想過濾一些節點,就用現在手頭上的節點就行了,但從右到左,我們就需要根據這些節點的父親、孩子、兄弟進行過濾,而且過濾後,這些用作比較的節點不能丟棄掉,它們可以還要用於下一次的過濾。這樣就存在乙個**關係,我們需要一些**器來幹這事情。當然像div.aaa是不需要**器,但div div.aaa就需要了。在從左到右的情況下,我們所有說的關係選擇器,主要有親子兄長與相鄰三種,遇到後代選擇器,我們可以轉化為萬用字元選擇器與標籤選擇器。而在從右到左,關係選擇器就包括後代萬用字元親子兄長相鄰五種,萬用字元實質是一種帶層次關係的後代選擇器。
//取得候選集的共同父節點的合集
var getparent = function(testee,result,yess,pid)
}return result;
}var iterators =
}nextset.nodes = result;
},parent:function(nextset), testee, uid, pid;
for(var i = 0,ri = 0, node; node = nodes[i++];)
yess[pid] = result[ri++] = node;
nextset[uid] = testee;
}break;}}
nextset.nodes = result;
},iterators.parents = function (nextset) ;
for (var i = 0, ri = 0, node; node = nodes[i++];)
if (!testee)
}pid = testee.uniqueid || (testee.uniqueid = dom.uid++);
if (yess[pid])
if ((!tagname || tagname === testee.nodename) &&
yess[pid] = result[ri++] = node;
nextset[uid] = getparent(testee, result, yess, pid);
break;}}
}}
nextset.nodes = result;
}border:function(nextset)
break;}}
nextset.nodes = result;
},borders:function(nextset), testee, uid, pid;
for(var i = 0,ri = 0, node;node = nodes[i++];)
yess[pid] = result[ri++] = node;
nextset[uid] = testee;
break;}}
}nextset.nodes = result;
}}
它們幾個好相似,正在考慮是否動態生成它們……
property
value
display
inline-block
height
any value
float
left or right
position
absolute
width
any value
writing-mode
tb-rl
zoom
any value
11111111
54354435
aaaaaaaaa
bbbbbbbcccccccdddddddd
44444444
555555555
執行**
用時間截代替uid的篩選功能
選擇div div div
3
3
後代
var fathers = function ()
if (testee.nodename === "div")
}i++;
}this[0] = _nodes;
this[1] = _set;
this.length = 3;
}
親子
var father = function ()
if (testee.nodename === "div")
break;
}i++;
}this[0] = _nodes;
this[1] = _set;
this.length = 3;
}
2011.1.26
var border = function (expr, set, flag_xml) );
for (var i = 0, n = set.length; i < n; i++) ;
testee = testee && testee.nodename === selector && testee || false;}}
expr && filter.call(null, expr, set, true);
}
var parent = function (expr, set, flag_xml) );
for (var i = 0, n = set.length; i < n; i++)
}expr && filter.call(null, expr, set, true);
}
var borders = function (expr, set, flag_xml) else
return '';
});if (expr === old)
_filter.call(null, selector, set, prop, flag_fn);
expr && filter.call(null, expr, set, true);
}
var parents = function (expr, set, flag_xml) else
return '';
});if (expr === old)
_filter.call(null, selector, set, prop, flag_fn);
expr && filter.call(null, expr, set, true);
}
mysql五大正規化 MySQL五大正規化
第一正規化 1nf 資料表的每一列都要保持它的原子特性,也就是列不能再被分割。這張表就不符合第一正規化規定的原子性,不符合關係型資料庫的基本要求,在關係型資料庫中建立這個表的操作就不能成功。不得不將資料表設計為如下形式。第二正規化 2nf 概率 屬性必須完全依賴於主鍵。下滿這張表不符合第二正規化的要...
五大瀏覽器核心
一般說的瀏覽器核心是指瀏覽器最重要的核心部分,renderingengine,翻譯成中文大概意思就是 解釋引擎 我們一般稱為瀏覽器核心。由於不同的核心各自有一套自己的渲染網頁和解釋頁面 的機制,所以就會有一些問題存在。首先,都有哪些瀏覽器呢?谷歌瀏覽器 google chrome。火狐瀏覽器 moz...
mysql五大儲存引擎 mysql五大儲存引擎
mylsam mylsam表無法處理事務,這就意味著有事務處理需求的表,不能使用mylsam儲存引擎。innodb innodb是乙個健壯的事務型儲存引擎mysql5.6版本以後innodb就是作為預設的儲存引擎。innodb還引入了行級鎖定和鍵外約束。memory 使用mysql memory儲存...