如何使用“ $(this)”删除表中的类

时间:2018-09-27 14:06:47

标签: javascript jquery

当我在func Difference(slice1 []string, slice2 []string) []string { // Create proper "set" (Maps have unordered pairs and the keys are unique; // lookup to check whether value is present is O(1), similar to other // implementations) m := make(map[string]struct{}, len(slice1)) for _, el := range slice1 { m[el] = struct{}{} } // Remove values from slice1 present in slice2 for _, el := range slice2 { delete(m, el) } // Note that res will be non-deterministic: the order of iteration over maps // is made random on purpose by Go itself res := make([]string, 0, len(m)) for k := range m { res = append(res, k) } return res } 中单击 id =“ rollback1” 第一表行中删除类失败 >不从表第二行删除类失败。

img

我尝试过:

<table>
  <tr>        
   <td class="fail">      
   </td>

   <td>
     <img id="rollback1"></img>
   </td>        
  </tr>

  <tr>        
   <td class="fail">      
   </td>

   <td>
     <img id="rollback2"></img>
   </td>        
  </tr>
</table>

还有:

$("#rollback1").on('click',function(){
 $(this).find('.fail').removeClass();
});

仍然无法弄清楚,我如何仅从一行中删除一个类。

6 个答案:

答案 0 :(得分:1)

您可以这样做:

$(this).closest('tr').find('td.fail').removeClass('fail');

您可以使用id并从选择器^=开始,例如:

$("[id^=rollback]").on('click', function() {
    $(this).closest('tr').find('.fail').removeClass('fail');
});

$("[id^=rollback]").on('click', function() {
  $(this).closest('tr').find('.fail').removeClass('fail');
});
.fail {
  background-color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<table border=1>
  <tr>
    <td class="fail">TD 1</td>

    <td>
      <img id="rollback1" alt="IMAGE 1" />
    </td>
  </tr>

  <tr>
    <td class="fail">TD 1</td>

    <td>
      <img id="rollback2" alt="IMAGE 2" />
    </td>
  </tr>
</table>


我的建议:我建议以下解决方案之一:

  1. img标签定位:

    $("table img").on('click', function() {
       //Your code
    });
    
  2. 改为使用通用类,如:

    $(".rollback").on('click', function() {
       //Your code
    });
    

    然后您的HTML代码必须类似于:

    <img class="rollback" id="rollback1" alt="IMAGE 2" />
    <img class="rollback" id="rollback2" alt="IMAGE 2" />
    

答案 1 :(得分:1)

 $("#rollback1").on('click',function(){
 $(this).parent().find('.fail').removeClass();
 });

答案 2 :(得分:1)

如果#rollback2在第二行做同样的事情,则可以做一些更通用的事情:

$('img[id^="rollback"]').on('click', function(e) {
    e.preventDefault();
    $(this).closest('tr').find('.fail').removeClass('fail');
});

答案 3 :(得分:1)

closest()方法返回所选元素的第一个祖先。

祖先是父母,祖父母,曾祖父母等等。

find()方法返回所选元素的后代元素。

$(this).closest('tr').find('.fail').removeClass('fail');

答案 4 :(得分:1)

您可以使用parent()prev()来定位元素,如下所示:

$("#rollback1").on('click',function(){
  $(this).parent().prev('.fail').removeClass('fail');
  // if you have `td` in between use siblings()
  //$(this).parent().siblings('.fail').removeClass('fail');
});
.fail{color:red;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>        
   <td class="fail">11      
   </td>
   <td>
     <img id="rollback1" src="" alt="1"/>
   </td>        
  </tr>

  <tr>        
   <td class="fail"> 22     
   </td>

   <td>
     <img id="rollback2" src="" alt="2"/>
   </td>        
  </tr>
</table>

答案 5 :(得分:1)

尝试一下:

$("#rollback1").on('click', function() {
 $(this).closest('table').find('tr:nth-child(1)').removeClass('fail');
});