jquery按类选择然后匹配值

时间:2016-10-19 01:45:04

标签: javascript jquery

我有一个像这样的列表

<ul>
  <li class="somename">1</li>
  <li class="somename">2</li>
  <li class="somename">3</li>
  <li class="somename">1</li>
</ul>

然后我有这样的值

var myvalue = 1;

我想将myvalue与所有$(".somename).text()进行比较以找到匹配的值并将匹配的文本更改为其他内容,如下所示

<ul>
  <li class="somename">changed</li>
  <li class="somename">2</li>
  <li class="somename">3</li>
  <li class="somename">changed</li>
</ul>

$(".somename").text()给我一个字符串中的所有文字,如1231

我尝试了循环

       for(i=0;i<$(".somename").length;i++){
            if(myvalue == $(".somename")[i].text()){
                $(this).text("changed")
            }
        }

6 个答案:

答案 0 :(得分:1)

在jQuery对象上使用括号对象属性访问器(2)时,您正在访问集合中的基础对象,因此[]将不可用,因为它不是底层DOM上的函数对象(你应该在控制台上看到错误)

您可以使用jQuery .each方法循环遍历集合

.text()

如果您不想使用.each方法并且只使用$(".somename").each(function(){ //unless you are going to be doing more jQuery DOM stuff //no need to wrap in jQuery just access the innerText if(myvalue == this.innerText){ this.innerText = "changed"; } }); ,则需要使用.eq或类似方法来获取特定索引处的jQuery包装对象< / p>

for loop

答案 1 :(得分:1)

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

  var value = $(this).text();

  if (value == "1") {
    $(this).text("Changed")

  }

})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li class="somename">1</li>
  <li class="somename">2</li>
  <li class="somename">3</li>
  <li class="somename">1</li>
</ul>

  1. 使用.each()循环遍历班级的所有元素。
  2. 有条件,如果符合,则更改文字

答案 2 :(得分:0)

这样做......

$(".somename").each(function(e, val ){
       if (myvalue == e.text){

        //do stuff here
      }    
    ));

答案 3 :(得分:0)

请尝试一下,但是我在我自己的系统上没试过这个。

numpy

答案 4 :(得分:0)

您可以使用jQuery .each函数。

var myvalue=1;
$('.somename').each(function(){      
  if($(this).text()==myvalue){
    $(this).text('changed');
  }
});

答案 5 :(得分:0)

这里几件事 1.当您搜索任何DOM元素时。尝试将其复制到变量中然后使用它.DOM搜索是一项代价高昂的操作 2.当你使用for循环时,这将指向窗口对象

检查以下代码段

$(document).ready(function(){
  var someoneArray=$(".somename");
  var someoneArrayLength=someoneArray.length;
  var myValue=1;
  for(var i=0;i<someoneArrayLength;i++){
    var value=parseInt($(someoneArray[i]).text());
   console.log(this)
            if(myValue == value){
              alert("here");
               $(someoneArray[i]).text("changed");
            }
        }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li class="somename">1</li>
  <li class="somename">2</li>
  <li class="somename">3</li>
  <li class="somename">1</li>
</ul>

希望这有帮助