2017-04-13 157 views
0

我有这个html,其中“5”重复两次。当条件匹配时使用jquery匹配多个元素

<ul> 
    <li>5</li> 
    <li>6</li> 
    <li>7</li> 
    <li>5</li> 
</ul> 

所以,我对“LI”元素使用click()。

var guess1 = ""; 
    var guess2 = ""; 
    var count = 0; 

    $("li").click(function(){ 
     if (count < 2){ 
      count++; 
      if (count === 1) { 
       guess1 = $(this).text(); 
      } else{ 
       guess2 = $(this).text(); 
        if (guess1 === guess2) { 
        $(this).css("background", "red"); // Here both matching "LI" should affect. Not only one "LI" 
       } 
      }  
     } 
    }); 

问题:我想的是,当 “guess1” === “guess2”,那么这两个匹配 “LI”(在这种情况下含有LI值 “5”)应该采取背景颜色。

请给出任何建议。谢谢:)

+0

哇!真棒..它工作正常。 :) 谢啦 ! – Sahil

回答

2

将第一个元素保存在变量中。

var guess1 = ""; 
 
var guess2 = ""; 
 
var count = 0; 
 
var li1 = null; 
 

 
$("li").click(function() { 
 
    if (count < 2) { 
 
    count++; 
 
    if (count === 1) { 
 
     guess1 = $(this).text(); 
 
     li1 = $(this); 
 
    } else { 
 
     guess2 = $(this).text(); 
 
     if (guess1 === guess2) { 
 
     li1.css("background", "red"); 
 
     $(this).css("background", "red"); 
 
     } 
 
    } 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul> 
 
    <li>5</li> 
 
    <li>6</li> 
 
    <li>7</li> 
 
    <li>5</li> 
 
</ul>

+0

@Barmer $(“li:contains(”+ guess1 +“)”)。css(“background”,“#333”);很好地工作! :) – Sahil

0

尝试使用各种功能:

var guess1 = ""; 
    var guess2 = ""; 
    var count = 0; 

    $("li").click(function(){ 
     if (count < 2){ 
      count++; 
      if (count === 1) { 
       guess1 = $(this).text(); 
      } else{ 
      $('ul li').each(function(i) 
          {  
          guess2 = $(this).text(); 
          if (guess1 === guess2) { 
           $(this).css("background", "red"); 
          } 
         }); 

      }  
     } 
    }); 

这是一个小提琴:

https://jsfiddle.net/nannizeta/mvw8zzcf/4/