Hôm nay tôi nhận thấy rằng sự kết hợp giữa bộ chọn jQuery và hàm addClass() không hoạt động đúng trên IE8.Bộ chọn IE8 và jQuery
Ví dụ, khi tôi muốn đảm bảo rằng hàng chẵn được lựa chọn trong một bảng, tôi đã viết:
jQuery(document).ready(function($){
$("#table1 tr:nth-child(even)").addClass("even");
}
Và đối với CSS, tôi đã viết:
#table1 tr:nth-child(even), #table1 tr.even {
background-color: #ff0;
}
Trong Firefox , Chrome, Safari và Opera, ngay cả khi không có bộ chọn lớp giả trong tệp CSS, các hàng chẵn được chọn. Tuy nhiên, trong IE8, nó không phải là trường hợp. Các hàng không có màu nền khác.
Đây là kỳ lạ bởi vì khi tôi sử dụng:
jQuery(document).ready(function($){
$("#table1 tr:nth-child(even)").css({"background-color":"#ff0"});
}
Các hàng chọn được tô sáng trong IE8.
Ví dụ về vấn đề là câu hỏi có thể xem tại đây - 24ways example. Trong Firefox, Chrome, Safari và Opera, các hàng lẻ được gán một lớp "lẻ". Tuy nhiên, trong IE8, chúng không được gán một lớp "lẻ" và không được đánh dấu.
Nick, cảm ơn bạn rất nhiều vì đã khắc phục. Nó hoạt động như ma thuật. Nó thực sự khó hiểu tại sao IE8 cư xử theo cách này, bởi vì đối với các bộ chọn giả khác nó không xảy ra. Ví dụ, khi tôi sử dụng bộ chọn giả con đầu tiên và cuối cùng trong jQuery, nó vẫn hoạt động như dự định. Cảm ơn bạn lần nữa! – Terry
@teddyrised - Chào mừng bạn :) Tôi không chắc tại sao IE hoạt động như thế này, tôi sẽ chỉ thêm nó vào danh sách 50.000 thứ mà nó làm sai. Là một sang một bên, hãy chắc chắn chấp nhận câu trả lời để đóng câu hỏi/giúp các chàng tiếp theo tìm kiếm vấn đề này trên google - thông qua dấu kiểm bên trái :) –
Ah, cảm ơn rất nhiều vì đã giúp đỡ. Tôi vẫn còn mới để ngăn xếp tràn mặc dù tôi đã lurking xung quanh mãi mãi. Cảm ơn! – Terry