<b>3.11 便捷方法</b>
<b>3.11.1 sizzle.matches(</b>
expr, set )
便捷方法sizzle.matches( expr, set )使用指定的選擇器表達式expr對元素集合set進行過濾,并傳回過濾結果。
該方法通過簡單地調用函數sizzle( selector, context, results, seed )來實作,調用時會将元素集合set作為參數seed傳入。
相關代碼如下所示:
4043 sizzle.matches =
function( expr, set ) {
4044
return sizzle( expr, null, null, set );
4045 };
<b>3.11.2 sizzle.matchesselector(</b>
node, expr )
便捷方法sizzle.matchesselector( node, expr )用于檢查某個元素node是否比對選擇器表達式expr。
如果浏覽器支援原生方法matchesselector()、mozmatchesselector()、webkitmatchesselector()、msmatchesselector()中的一種,則嘗試調用原生方法檢查元素與選擇器表達式是否比對;如果浏覽器不支援原生方法,或者支援但是檢查失敗(抛出異常),則調用函數sizzle( selector, context, results, seed ),檢查其傳回值的長度是否大于0,調用時會将元素node封裝成數組作為參數seed傳入。
4047 sizzle.matchesselector
= function( node, expr ) {
4048
return sizzle( expr, null, null, [node] ).length > 0;
4049 };
5095 (function(){
5096
var html = document.documentelement,
5097
matches = html.matchesselector || html.mozmatchesselector ||
html.webkitmatchesselector || html.msmatchesselector;
5098
5099
if ( matches ) {
5100
// check to see if it's possible to do matchesselector
5101
// on a disconnected node (ie 9 fails this)
5102
var disconnectedmatch = !matches.call( document.createelement(
"div" ), "div" ),
5103 pseudoworks = false;
5104
5105
try {
5106 // this should fail with an
exception
5107 // gecko does not error, returns
false instead
5108 matches.call(
document.documentelement, "[test!='']:sizzle" );
5109
5110
} catch( pseudoerror ) {
5111 pseudoworks = true;
5112
}
5113
5114
sizzle.matchesselector = function( node, expr ) {
5115 // make sure that attribute
selectors are quoted
5116 expr =
expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
5117
5118 if ( !sizzle.isxml( node ) ) {
5119 try {
5120 if ( pseudoworks ||
!expr.match.pseudo.test( expr ) && !/!=/.test( expr ) ) {
5121 var ret =
matches.call( node, expr );
5122
5123 // ie 9's
matchesselector returns false on disconnected nodes
5124 if ( ret ||
!disconnectedmatch ||
5125 // as well,
disconnected nodes are said to be in a document
5126 // fragment in
ie 9, so check for that
5127 node.document
&& node.document.nodetype !== 11 ) {
5128 return ret;
5129 }
5130 }
5131 } catch(e) {}
5132 }
5133
5134 return sizzle(expr, null, null,
[node]).length > 0;
5135
};
5136
5137 })();