zepto のソース コードで、zepto.matches 関数にフォールバック実行があることがわかりました。
zepto.matches = 関数(要素、セレクター) {
if (!element || element.nodeType !== 1) false を返す
var matchesSelector = element.webkitMatchesSelector || element.mozMatchesSelector || element.mozMatchesSelector ||
element.oMatchesSelector || element.matchesSelector
if (matchesSelector) return matchesSelector.call(要素, セレクター)
// セレクターの実行に戻ります:
変数一致、親 = element.parentNode、一時 = !親
if (temp) (parent = tempParent).appendChild(要素)
一致 = ~zepto.qsa(親、セレクター).indexOf(要素)
temp && tempParent.removeChild(要素)
リターンマッチ
}
通常の matchSelector の方法にもかかわらず、フォールバックについて非常に興味があります。なぜこれの前に~を追加するのですか:
~zepto.qsa(parent, selector).indexOf(element)
document.getElementById("テスト");
$.zepto.matches(a,"#test") // -1
それは -1 を返します、それは正しいですか、それとも何か不足していますか?