javascript - 单击超链接时,JQuery 将默认行的颜色传递给下一行

标签 javascript jquery css

嘿伙计们,它是 jquery 的斑马带表我想知道如何让超链接 onclick 将特定行的颜色传递到底部或顶部? “单击 DN 链接必须使突出显示的行类 .highlight 向上移动到上一行。在表格周围循环 UP 和 DN 按钮的效果,这样当您到达表格的顶部或底部时它不会停止。 "

我的代码

$(function(){
    	$(".odd").hover(function()	{
    	$(this).toggleClass("hovered");
    	}, function() {
    	$(this).toggleClass("hovered");
    	});
    });
    
    
    $(function(){
    	$(".even").hover(function()	{
    	$(this).toggleClass("hovered");
    	}, function() {
    	$(this).toggleClass("hovered");
    	});
    });
    odd.hovered {
         background-color:red;
    }
    
    .even.hovered{
     background-color:red;
    }
    
    .highlight{
        background-color:yellow;
    }
    
    .odd{
    background-color:grey;
    }
    
    .even{
    background-color:#D3D3D3;
    
    }
<!-- saved from url=(0061)https://csunix.mohawkcollege.ca/tooltime/10065/f15/zebra.html -->
    <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body>
    <h2>2: Zebra Striping Demo</h2>
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js">
    </script>
  
    
    <table width="200" border="1">
      <caption><a href="https://csunix.mohawkcollege.ca/tooltime/10065/f15/zebra.html#">UP</a> Zebra Striping Demo <a href="https://csunix.mohawkcollege.ca/tooltime/10065/f15/zebra.html#">DN</a></caption>
      <tbody><tr class="odd">
      <td>January</td> 
      <td>February</td>
      <td>March</td>
      </tr>
      
      <tr class="even">
      <td>April</td>
      <td>May</td>
      <td>June</td>
      </tr>
      <tr class="highlight" >
      <td>July</td>
      <td>August</td>
      <td>September</td>
      </tr>
      
      <tr class="even">
      <td>October</td>
      <td>November</td>
      <td>December</td>
      </tr>
      
      <tr class="odd">
      <td>Monday</td>
      <td>Tuesday</td>
      <td> Wednesday</td>
      </tr>
      <tr class="even">
    <td>Thursday</td>
    <td>Friday</td>
    <td>Saturday</td>
    </tr>
      <tr class="odd">
      <td>Spring</td>
      <td>Summer</td>
      <td>Fall</td></tr>
    </tbody></table>
    </body></html>

最佳答案

这个怎么样?

$(function() {
  $('#up').click(function(e) {
    e.preventDefault();
    var $current = $('tr.highlight'),
      $previous = $current.prev();
    // remove current row's highlight
    $current.removeClass('highlight');
    // highlight previous row if it exist
    if ($previous.length)
      $previous.addClass('highlight');
    // otherwise highlight last row
    else
      $current.siblings().last().addClass('highlight');
  });

  $('#down').click(function(e) {
    e.preventDefault();
    var $current = $('tr.highlight'),
      $next = $current.next();
    // remove current row's highlight
    $current.removeClass('highlight');
    // highlight next row if it exist
    if ($next.length)
      $next.addClass('highlight');
    // otherwise highlight last row
    else
      $current.siblings().first().addClass('highlight');
  });
});
tr.odd {
  background-color: grey;
}
tr.even {
  background-color: #D3D3D3;
}
tr.highlight {
  background-color: yellow;
}
tr:hover {
  background-color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table width="200" border="1">
  <caption><a href="https://csunix.mohawkcollege.ca/tooltime/10065/f15/zebra.html#" id="up">UP</a> Zebra Striping Demo <a href="https://csunix.mohawkcollege.ca/tooltime/10065/f15/zebra.html#" id="down">DN</a>
  </caption>
  <tbody>
    <tr class="odd">
      <td>January</td>
      <td>February</td>
      <td>March</td>
    </tr>

    <tr class="even">
      <td>April</td>
      <td>May</td>
      <td>June</td>
    </tr>
    <tr class="highlight">
      <td>July</td>
      <td>August</td>
      <td>September</td>
    </tr>

    <tr class="even">
      <td>October</td>
      <td>November</td>
      <td>December</td>
    </tr>

    <tr class="odd">
      <td>Monday</td>
      <td>Tuesday</td>
      <td>Wednesday</td>
    </tr>
    <tr class="even">
      <td>Thursday</td>
      <td>Friday</td>
      <td>Saturday</td>
    </tr>
    <tr class="odd">
      <td>Spring</td>
      <td>Summer</td>
      <td>Fall</td>
    </tr>
  </tbody>
</table>

顺便说一下,您不需要为每一行添加一个类。你可以使用 :nth-type selector在您的 CSS 中创建替代样式。

关于javascript - 单击超链接时,JQuery 将默认行的颜色传递给下一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40943480/

相关文章:

javascript - 数数错误

javascript - jquery match() 变量插值 - 复杂的正则表达式

c# - 当文本框具有默认值时,MVC 3 不显眼的 javascript 验证

html - 如何将背景图像设置到分区的左侧?

javascript - 如何在 FabricJS 中将旋转点位置更改为底部?

javascript - AngularJS 使用 ng-upload 上传图片

javascript - jQuery replaceWith 不起作用

javascript - 仅当另一个元素悬停时才更改元素的颜色

javascript - 职位固定问题

html - 如何获得 HTML 标题的宽度以匹配文本内容?