我想选择一个包含特定文本的div类。
例如:<div class="foo">Foo39</div>
如果foo类包含“foo39”文本,则应为红色,如果它包含其他文本,则应为绿色!
我尝试使用CSS,但没有成功!
我想选择一个包含特定文本的div类。
例如:<div class="foo">Foo39</div>
如果foo类包含“foo39”文本,则应为红色,如果它包含其他文本,则应为绿色!
我尝试使用CSS,但没有成功!
JQuery提供了:contains
选择器,使用方法如下:
$('.foo:contains(Foo39)').css('background-color', 'red');
$('.foo:not(:contains(Foo39))').css('background-color', 'green');
$('document').ready(function() { ... })
- Kwarrtz既然您没有提到使用jQuery,您可以使用纯JavaScript……但是可以使用原生的querySelector/All。
使用querySelectorAll 可能比jQuery的.contains方法更高效。
<div class="foo">Foo37</div>
<div class="foo">Foo38</div>
<div class="foo">Foo39</div>
<div class="foo">Foo40</div>
<script>
var find = "Foo40";
var needle;
var haystack = document.querySelectorAll(".foo");
var i;
for (i = 0; i < haystack.length; i++) {
if(haystack[i].innerHTML == find){
console.log("found");
haystack[i].style.background = "red";
}else{
haystack[i].style.background = "green";
}
}
</script>
使用 getElementsByClassName 可能比 querySelectorAll 更高效。
<div class="foo">Foo37</div>
<div class="foo">Foo38</div>
<div class="foo">Foo39</div>
<div class="foo">Foo40</div>
<script>
var find = "Foo40";
var needle;
var haystack = document.getElementsByClassName("foo");
var i;
for (i = 0; i < haystack.length; i++) {
if(haystack[i].innerHTML == find){
console.log("found");
haystack[i].style.background = "red";
}else{
haystack[i].style.background = "green";
}
}
</script>
querySelectorAll
函数的实现在不同浏览器之间会有所不同,但我不认为在任何情况下它都会非常慢。 - Kwarrtz