我需要能够让下一个元素/上一个元素用当前元素更改背景颜色。我怎么做。我工作的元素是TR,表格行和nextSibling,previousSibling不会为我做这个诡计,不知道为什么?悬停下一个/前一个元素
0
A
回答
1
我认为我们在这里即使是“好”的浏览器中一个非常恼人的行为方式有一个情况。
就拿我下面的表格,其中HTML如下所示:
<table border="1">
<thead>
<tr id="header">
<th>eng</th>
<th>deu</th>
<th>spa</th>
</tr>
</thead>
<tbody>
<tr id="row1">
<td>one</td>
<td>eins</td>
<td>uno</td>
</tr>
<tr id="row2">
<td>spoon</td>
<td>der Löffel</td>
<td>la cucharita</td>
</tr>
</tbody>
</table>
当我在Firefox中打开此起来去到控制台,并运行下面的片断,注意nextSibling的行为方式:
// My input command
document.getElementById("row1").nextSibling;
// Output from the console
<TextNode textContent="\n ">
我读过有关这地方,我忘了确切位置(Quirksblog,或者从通话PPK一样),所以后来我尝试了以下内容:
// my input command
document.getElementById("row1").nextSibling.nextSibling;
// output from the console
<tr id="row2">
这是我们美妙的标准兼容浏览器(IMHO)绝对错误的时刻之一。
为了测试,我决定单行我的表的HTML,所以(希望它显示了所有在同一行):
<table border="1"><thead><tr id="header"><th>eng</th><th>deu</th><th>spa</th></tr></thead><tbody><tr id="row1"><td>one</td><td>eins</td><td>uno</td></tr><tr id="row2"><td>spoon</td><td>der Löffel</td><td>la cucharita</td></tr></tbody></table>
并再次运行我的测试:
// Hmmm, does nextSibling work _as expected_ now?
document.getElementById("row1").nextSibling;
// yep
<tr id="row2">
Benice,你的想法是正确的,但你在浏览器部分的实施监督中偏离了我的想法。我建议您非常小心使用跨浏览器的HTML DOM关系。他们大多数工作如预期,但有时他们不。
啊,发现这个毕竟一篇文章:https://developer.mozilla.org/en/Whitespace_in_the_DOM
+0
一个跟进,当我说Benice的想法是正确的时候,我应该说我相信我所做的事情是正确的,因为我没有看到他的代码。 – jeremyosborne
0
使用jQuery,您可以应用hover()函数,并将具有适当背景颜色的类设置为下一行和前一行。走出一行会从这些行中删除高亮。可以肯定的是,在将其应用于任何行之前,您需要重置整个表上的高亮类。
$('tr').hover(
function() {
var $this = $(this);
$this.closest('table').find('tr').removeClass('highlight');
$this.next('tr').addClass('highlight');
$this.prev('tr').addClass('highlight');
$this.addClass('highlight');
},
function() {
var $this = $(this);
$this.next('tr').removeClass('highlight');
$this.prev('tr').removeClass('highlight');
$this.removeClass('highlight');
}
});
这取决于这个片段CSS
.highlight {
background-color: #ff8; /* or whatever color you choose */
}
相关问题
- 1. fadeToggle悬停中的下一个元素
- 2. 悬停一个伪元素?
- 3. 悬停一个元素并影响另一个元素
- 4. 将鼠标悬停在另一个元素下的元素
- 5. 如何影响父元素的下一个元素时,悬停
- 6. 显示另一个元素与悬停
- 7. 悬停只适用于一个元素
- 8. 悬停元素影响另一个div
- 9. jQuery悬停滚动另一个元素
- 10. CSS悬停另一个元素
- 11. 影响时,另一个元素悬停
- 12. 跳悬停未来一个元素
- 13. CSS悬停改变另一个元素
- 14. CSS:悬停一个元素,影响多个元素?
- 15. 使用CSS更改悬停在DOM上的前一个元素
- 16. 制作悬停另一个元素(不包括:悬停性能)可见元素
- 17. 如何让一个元素悬停在其他元素上时悬停
- 18. xslt基于前一个元素的下一个元素值
- 19. CSS悬停2另一个元素(和另一个属性)
- 20. 控制:当一个div在另一个元素上悬停时
- 21. 当悬停一个DOM元素显示另一个
- 22. jQuery从一个类到另一个褪色元素,在悬停
- 23. 悬停一个元素,选择另一个
- 24. jQuery - 悬停一个元素来添加一个类到它?
- 25. CSS:在悬停时更改下一个元素的z-index
- 26. 没有悬停在下一个李元素
- 27. 更改当前元素悬停事件的另一个元素样式
- 28. 将鼠标悬停在一个元素上,转换另一个元素
- 29. 当它悬停另一个元素时更改一个元素的CSS
- 30. 将鼠标悬停在一个元素上会影响另一个元素?
你能告诉我们您所使用的代码? – jkndrkn
nextSibling和previousSibling应该在TR上工作,您可以发布一些代码以获取更多信息吗?如果您在TD上设置了背景,则TR将不会正确显示背景颜色。 –
对不起,我迟到了,我得到它的工作,这是dom的实现让我,我得做它的工作是不断寻找next/prev元素,直到我得到一个实际的元素,而不是文本节点,我通过查看节点的类型来做到这一点。 谢谢 – BeNice