jQueryはjavascriptです。また、代替エンジンとして多数のセレクタエンジンが用意されています。
ゼロから実行したい場合は、querySelectorAllを使用して適切なコンテンツ(コンテンツセレクタが実装されていないことが前提)を探し、それが利用できない場合は独自のものを実装できます。あなたはこのような何かを書くことができるように
// Some helper functions
function hasClass(el, className) {
var re = new RegExp('(^|\\s)' + className + '(\\s|$)');
return re.test(el.className);
}
function toArray(o) {
var a = [];
for (var i=0, iLen=o.length; i<iLen; i++) {
a[i] = o[i];
}
return a;
}
// Main function
function getEls() {
var result = [], node, nodes;
// Collect spans inside A elements with class swchItem
// Test for qsA support
if (document.querySelectorAll) {
nodes = document.querySelectorAll('a.swchItem span');
// Otherwise...
} else {
var as = document.getElementsByTagName('a');
nodes = [];
for (var i=0, iLen=as.length; i<iLen; i++) {
a = as[i];
if (hasClass(a, 'swchItem')) {
nodes = nodes.concat(toArray(a.getElementsByTagName('span')));
}
}
}
// Filter spans on content
for (var j=0, jLen=nodes.length; j<jLen; j++) {
node = nodes[j];
if ((node.textContent || node.innerHTML).match('1')) {
result.push(node);
}
}
return result;
}
':contains()'疑似クラスはもはやCSS標準の一部ではなく、 'querySelectorAll()'で認識されません。つまり、JSを使用してjQuery/Sizzleが ':contains()'をどのように実装しているかをソースコードを参照することができます。 – BoltClock
私はjQueryを通して少しの時間を費やしましたが、私は本当にそれが ':contains'をどのように見たいと思っていません。 textContentまたはinnerText(どちらがサポートされていようと)にマッチしているのと同じようにしなければなりませんが、それはそれ自身の 'text'関数を使うかもしれません(これは不要で遅いですが、 )。 – RobG