jquery - 选择具有特定内容的元素

时间:2017-04-18 05:50:08

标签: javascript jquery html function jquery-selectors

我有一个像这样的html结构:

<div class="test">
   <span class="content">1</span>
</div>
<div class="test">
   <span class="content">2</span>
</div>
...
<div class="test">
   <span class="content">100</span>
</div>

在我的javascript代码中,我需要获取一个<span>元素,其中content类具有12,...,{{{ 1}}

我测试了jquery .contains方法,但这会返回所有具有100的元素。例如11,...

5 个答案:

答案 0 :(得分:4)

您可以使用filter方法接受应用于每个项目的回调函数。

var array=$('.test').find('.content').filter(function(){
   return $(this).text().trim()==100;
});
console.log(Array.from(array));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="test">
   <span class="content">1</span>
</div>
<div class="test">
   <span class="content">2</span>
</div>
<div class="test">
   <span class="content">100</span>
</div>

答案 1 :(得分:0)

您可以按以下方式继续:

&#13;
&#13;
$('.content').each(function(){
  if($(this).html() == "2")
  {
    console.log("THE SPAN WITH 2 IS ");
    console.log($(this)[0]);
  }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="test">
   <span class="content">1</span>
</div>
<div class="test">
   <span class="content">2</span>
</div>
<div class="test">
   <span class="content">100</span>
</div>
&#13;
&#13;
&#13;

我们在这里做的是检查跨度的内容类,并检查它们的内部html是否为2,如果是我们的console.log它。

答案 2 :(得分:0)

您可以使用vanilla .indexOf()方法。

indexOf方法接受您要查找的字符串的参数,并返回索引(如果已找到),如果不是,则返回 -1

var myEl = document.querySelector(".test"):

for loop...

if( myEl.innerHTML.indexOf(2) != -1 ){
    console.log("This element contains the number 2")
}

答案 3 :(得分:0)

您可以使用.filter()来获取并检查.textContent.innerHTML元素,在.filter()回调您可以使用RegExp N$ N是要匹配的数字。例如,要匹配"1"设置为"2".textContent的元素,您可以使用RegExp /1$|2$/;匹配"100"/100$/;与RegExp.prototype.test()

&#13;
&#13;
var filtered = $("span.content").filter((_, {textContent}) => 
                 /1$|2$/.test(textContent));

filtered.css("color", "green");
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<div class="test">
   <span class="content">1</span>
</div>
<div class="test">
   <span class="content">2</span>
</div>
...
<div class="test">
   <span class="content">100</span>
</div>
&#13;
&#13;
&#13;

答案 4 :(得分:-1)

你可以这样做......

$('.test').each(function() {

if($(this).text == '1')
{
var a = $(this).html();
}

});

a现在将包含该跨度的html,其中包含您的文本。