div:不包含有效的选择器

时间:2017-03-18 16:13:47

标签: javascript jquery jquery-selectors

我正在关注this example并输入^example\.com\/[a-z]+\-[a-z]+$,但却有例外:

VM23376:1未捕获的DOMException:无法在'CommandLineAPI'上执行'$':'div:contains('John')'不是有效的选择器。

4 个答案:

答案 0 :(得分:0)

您可以使用JS vanilla来做到这一点:

function contains(selector, text) {
  var elements = document.querySelectorAll(selector);
  return Array.from(elements).filter(function(element) {
    return RegExp(text).test(element.textContent);
  });
}

// Run Code
let found = contains('span', 'Find');
// You can also search with regex
found = contains('span', 'Find\\s*[A-Za-z]+');

for (let i = 0; i < found.length; i++) {
  let elem = found[i];
  elem.style.backgroundColor = 'red';
}
<p>Some text where you have span tag that said <span>Find Me</span></p>

答案 1 :(得分:0)

我猜是复制粘贴问题。 OP 键入 'div:contains('John')' 而不是 "div:contains('John')"。 正确复制粘贴的代码可以正常工作。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>contains demo</title>
  <script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
 
<div>John Resig</div>
<div>George Martin</div>
<div>Malcom John Sinclair</div>
<div>J. Ohn</div>
 
<script>
$( "div:contains('John')" ).css( "text-decoration", "underline" );
</script>
 
</body>
</html>

答案 2 :(得分:-1)

解决方法: 通过文本手动过滤元素:

$('div').filter(function(element){
    return $(element).text().includes('John')
}).css('text-decoration', 'underline' )

答案 3 :(得分:-3)

您可以将该字符串存储在变量中,并在contains中调用该变量。请看看这个。希望这会对你有所帮助。

var name = "John";
$( "div:contains(name)" ).css( "text-decoration", "underline" );