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()'. Тем не менее, вы действительно можете обратиться к исходному коду, чтобы узнать, как jQuery/Sizzle реализует ': contains()' с помощью JS. – BoltClock
Я потратил немного времени, пробираясь через jQuery, я действительно не хочу видеть, как это происходит: содержит. Он должен делать это так, как будто я согласен на textContent или innerText (в зависимости от того, что поддерживается), хотя он может использовать свою собственную функцию «text» (что необязательно и медленнее, но я не знаю, действительно ли это то,). – RobG