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 を返します、それは正しいですか、それとも何か不足していますか?