Đây là một giải pháp tốt tôi đã tìm thấy trong một cuốn sách: "The Anthology của javascript"
Something như thế:
/* for all but IE */
#nav ul li.currentpage > a:hover {
background-color: #eff;
}
Và mã để phục vụ cho IE:
/* for IE */
* html #nav ul li.currentpage a:hover {
background-color: expression(/currentpage/.test(this.parentNode.className)? "#eff" : "#ef0");
}
Việc hack cho IE là chỉ có IE nghĩ rằng có một wrapper trên html, và IE không hỗ trợ các công cụ expression().
Biểu thức sử dụng cụm từ thông dụng (/ currentpage /) và kiểm tra nó đối với lớp của nút cha, vì vậy các con trực tiếp của phần tử li.currentpage sẽ được đặt thành #eff, các hậu duệ khác sẽ được đặt tới # ef0.
Lưu ý rằng các màu sắc được sử dụng là giả mạo, xin đừng bình luận gì về họ ;-)
Thật không may câu trả lời này không hoàn hảo. Nó hoạt động nhưng như con cháu hậu duệ, nó cũng có thể gây ra vấn đề ... giả sử bạn có 3 div lồng nhau. bạn muốn thay đổi div thứ hai thành padding 20px trong khi div thứ ba có đệm là 5px. Bạn có thể có quy tắc này đặt mọi trẻ em khác vào một padding 4 px. Nhưng hãy nói rằng bạn có một div khác để 7px ... bạn không thể chỉ cần đặt giá trị trở lại cái gì khác. Nó có thể làm việc nhưng bạn vẫn còn quá tìm kiếm những hậu quả không tốt ... –