2015-08-25 17 views
0

我試圖改變字段的風格時,在另一個字段hoving。這工作正常,當我使用錨標籤,但與表標籤它似乎不工作? 這個版本的作品:用css連接兩個字段之間的懸停效果

<p>Hover over 1 and 3 gets styled.</p> 
<a id="one">1</a> 
<a id="two">2</a> 
<a id="three">3</a> 

與CSS

#one:hover ~ #three{ 
    background-color: black; 
    color: white; 
} 

現在我想獲得相同的桌子:

<table> 
    <tr align="center"> 
     <td> 
     <a id="four"> 
      4 
     </a> 
     </td> 
    </tr> 
    <tr align="center"> 
     <td> 
     <a id="five"> 
      5 
     </a> 
     </td> 
    </tr> 
</table> 

和CSS

#five:hover ~ #four{ 
    background-color: black; 
    color: white; 
} 

但是桌子不在這裏工作了......是小提琴

https://jsfiddle.net/a3y52/1044/

+1

這可不行,原因有二:** 1 **的元素都沒有兄弟姐妹,你正在使用的普通兄弟組合子。 ** 2:**沒有「前兄弟姐妹」的選擇器(所以即使他們是兄弟姐妹,兄弟姐妹聯合者仍然不會/不能工作)。 –

+0

您不能選擇** up **文檔。你需要JavaScript。 –

回答

1

需要Javascript,或者更好的jQuery來做到這一點:

在腳本

$(document).ready(function() { 
    $("#five").hover(
     function() { 
     $('#four').addClass("overstate"); 
     }, function() { 
     $('#four').removeClass("overstate"); 
     } 
    ); 
}); 

在你的CSS:

#five:hover { 
background-color: black; 
color: white; 
} 

.overstate { 
background-color: black; 
color: white; 
} 
+0

感謝Nathan ......對我來說工作得很好......雖然這個CSS太呆板了,但我有點驚訝...... – carl

+0

歡迎您。 Css仍然非常靈活,但只適用於親子關係。 –

1

如果您將添加到將工作的CSS

#one:hover ~ #three{ 
 
    background-color: black; 
 
    color: white; 
 
} 
 

 
a#five:hover{ 
 
    background-color: black; 
 
    color: white; 
 
} 
 
a#four:hover{ 
 
    background-color: black; 
 
    color: white; 
 
}
<table> 
 
    <tr align="center"> 
 
     <td> 
 
     <a id="four"> 
 
      4 
 
     </a> 
 
     </td> 
 
    </tr> 
 
    <tr align="center"> 
 
     <td> 
 
     <a id="five"> 
 
      5 
 
     </a> 
 
     </td> 
 
    </tr> 
 
</table>