1

最近、新しいjQuery Sizzleをざっと見てみましたが、Sizzle.matchesSelectorを使用することと、要素パラメーターの属性を直接評価することの間に、パフォーマンスに大きな違いがあるかどうか疑問に思いました。

$.expr.createPseudo(function(selector) {
  return function( elem ) {
    return elem.getAttribute('data-smth').match(/someRegex/)
  }
}

VS:

$.expr.createPseudo(function(selector) {
  return function( elem ) {
    return $.find.matchesSelector(elem, 'div.someClass[data-smth*=smth]')
  }
}

jqueryレベルを維持し、いくつかの制約を簡単に追加できるため、個人的にmatchesSelectorの方が簡単だと思います(上記の例の.someClass)

4

1 に答える 1

1

違いは.matchesSelector()、ネイティブまたはSizzle開発者によって作成されたカスタム関数のいずれかであるということです。ネイティブ関数の場合、違い.getAttribute()はまだ速くなりますが、小さくなります。ただし、カスタム関数の場合は、差が大きくなり、間違いなく.getAttribute()

.matchesSelector()ただし、属性を安全にクエリするため、これは覚えておく必要があります。

于 2012-11-19T23:03:16.570 に答える