10/10/2018, 11:38

cho mình hỏi cách add class active trong menu

[HTML]
<body>
<div class="container">
<ul id="menu">
<li class="active"><a href="trangchu.html">Trang chủ</a></li>
<li class="hover"><a href="gioithieu.html">Giới thiệu</a></li>
<li class="hover"><a href="dieukhoan.html">Điều khoản</a></li>
</ul>
</div>
</body>
[/HTML]

mình có 3 trang html như trên, giờ mình muốn khi click vào trang gioithieu thì nó sẽ xóa class active ở trangchu và thay vào đó là class hover, còn link mình vừa click thì dc thay bằng class hover, bạn nào biết cách làm bằng js hoặc jquery thì chỉ mình với, thanks
chesterben viết 13:47 ngày 10/10/2018
Có chút thắc mắc là tại sao tất cả các item của menu đều có class hover hết vậy . Thôi thì theo ý bạn. Nếu dùng một ngôn ngữ lập trình nào đó thì mình sẽ chỉ cách hay hơn. Còn nếu chỉ là HTML thì mình sẽ làm jQuery như sau:

Code:
$("#menu li a").click( function() {
    $(this).parent().parent().find("li").removeClass("active").removeClass("hover").addClass("hover");
    $(this).parent().removeClass("hover").addClass("active");
});
Code này mới chỉ là thấy rùi code chứ chưa test. Nhưng nói chung là tương tự như vậy đó.
ledinhcuong248 viết 13:39 ngày 10/10/2018
Được gửi bởi chesterben
Có chút thắc mắc là tại sao tất cả các item của menu đều có class hover hết vậy . Thôi thì theo ý bạn. Nếu dùng một ngôn ngữ lập trình nào đó thì mình sẽ chỉ cách hay hơn. Còn nếu chỉ là HTML thì mình sẽ làm jQuery như sau:

Code:
$("#menu li a").click( function() {
    $(this).parent().parent().find("li").removeClass("active").removeClass("hover").addClass("hover");
    $(this).parent().removeClass("hover").addClass("active");
});
Code này mới chỉ là thấy rùi code chứ chưa test. Nhưng nói chung là tương tự như vậy đó.
mình thử nhưng nếu để link là # thì nó mới có tác dụng, còn khi chuyển sang trang khác thì home vẫn là class active, bạn sửa hộ mình với ,thanks

http://www.mediafire.com/?2ujrrbmvd9dkdwc
chesterben viết 13:47 ngày 10/10/2018
Bạn có dùng ngôn ngữ lập trình nào trong này ko? PHP chẳng hạn?
Nếu ko thì chỉ cần thay đổi trong mỗi file thôi chứ cần gì jQuery. Chúng ta chỉ cần js khi ở trong cùng 1 trang.
honnhienh viết 13:47 ngày 10/10/2018
làm như zầy là đơn giản nhất bác. bác đặt id ccho thẻ body của mỗi trang cảu bác sau đó ở mỗi cái menu tương ứng bác đặt cái class trung tên với cái id của the body (cái này tuy thôi mình đặt như zậy cho dễ nhớ hi hi) bác style cái file css của bác theo id của tag body (#index .index,#home .home,#help .help{css active class }). Ở cái

Code:
<li class="index"><a href="trangchu.html">Trang chủ</a></li>
<li class="home"><a href="gioithieu.html">Giới thiệu</a></li>
<li class="help"><a href="dieukhoan.html">Điều khoản</a></li>

cách dẽ nhất rùi bác. còn nếu dùng lập trình xuất ra gắn thẻ active vào thì phức tạp hơn. dùng javascript thì chỉ có tác dùng trên trang đó thôi cái này chỉ dùng cho tab......(dùng javascript thì có thể biến tấu thêm biến của ngôn ngữ lập trình cũng được từy bác) cách đầu hơi chuối nhưng chạy ok không cần suy nghĩ nhiều cách 2 thì hơi mệt nhưng khi thêm menu vào ở phần back-end thì rất linh động . chúc bác thành công
rain1007ht viết 13:40 ngày 10/10/2018
jquery cho bạn nè:

Code:
$(document).ready(function(){
      $('#menu li').click(function(){
           $('#menu li.active').removeClass('active').addClass('hover');
           $(this).addClass('active').removeClass('hover');
       });
});
THÂN !
ledinhcuong248 viết 13:46 ngày 10/10/2018
Được gửi bởi honnhienh
làm như zầy là đơn giản nhất bác. bác đặt id ccho thẻ body của mỗi trang cảu bác sau đó ở mỗi cái menu tương ứng bác đặt cái class trung tên với cái id của the body (cái này tuy thôi mình đặt như zậy cho dễ nhớ hi hi) bác style cái file css của bác theo id của tag body (#index .index,#home .home,#help .help{css active class }). Ở cái

Code:
<li class="index"><a href="trangchu.html">Trang chủ</a></li>
<li class="home"><a href="gioithieu.html">Giới thiệu</a></li>
<li class="help"><a href="dieukhoan.html">Điều khoản</a></li>

cách dẽ nhất rùi bác. còn nếu dùng lập trình xuất ra gắn thẻ active vào thì phức tạp hơn. dùng javascript thì chỉ có tác dùng trên trang đó thôi cái này chỉ dùng cho tab......(dùng javascript thì có thể biến tấu thêm biến của ngôn ngữ lập trình cũng được từy bác) cách đầu hơi chuối nhưng chạy ok không cần suy nghĩ nhiều cách 2 thì hơi mệt nhưng khi thêm menu vào ở phần back-end thì rất linh động . chúc bác thành công
cách làm menu 3 trạng thái bằng css này cũng từng làm theo hướng dẫn của izwebz, nhưng mình dùng template trong DW nên ko thay đổi được id của body, nếu ko dùng thì sửa từng trang 1 rất mất công, dù sao cũng cám ơn bạn đã góp ý

[=========> Bổ sung bài viết <=========]

Được gửi bởi rain1007ht
jquery cho bạn nè:

Code:
$(document).ready(function(){
      $('#menu li').click(function(){
           $('#menu li.active').removeClass('active').addClass('hover');
           $(this).addClass('active').removeClass('hover');
       });
});
THÂN !
cám ơn bạn nhưng code này vẫn không được bạn ạ, bạn có thể cho mình code để gán 1 id có sẵn cho thẻ body không dc không, thanks

mình thấy giờ các trang web đều active menu để cho người dùng biết mình đang ở trang nào, không biết họ dùng cách gì vậy nhỉ?
honnhienh viết 13:52 ngày 10/10/2018
ack. mình hông hiểu ý bạn nha. menu của bạn được xuất từ csdl ra hay làm nó là menu tĩnh ?
hmclip viết 13:43 ngày 10/10/2018
Có bài viết hướng dẫn chi tiết bằng SQL + Asp.net Bạn tham khảo xem giúp được bạn không nhé: http://hmclip.net/Chia-Se-La-Niem-Vu...sql-server.htm
webjquery viết 13:39 ngày 10/10/2018
Thường khi làm active menu như ý bạn, người ta làm như này.
Bạn cần xác định được là mình (hoặc người dùng) đang ở trang nào, ví dụ đang ở trang chủ thì bạn có cái class là active, và các mục còn lại không có class này.
Code:
     <ul>
           <li class="<?php if($page=='1'){echo "active";} ?>">Trang chủ</li>
           <li class="<?php if($page=='2'){echo "active";} ?>">Tin tức</li>
           <li class="<?php if($page=='3'){echo "active";} ?>">Sản phẩm</li>
     </ul>
Cái quan trọng là cái $page kia bạn phải xác định được là nó đang ở trang nào thôi, khi xác định đựoc nó rồi thì chỉ cần style CSS nữa là active được.
Cái nữa. Nếu như ý bạn đặt các class như vậy rồi dùng Jquery để remove và add lại class, thì chỉ áp dụng được khi sử dụng Ajax hoặc Jquery khi làm menu thôi. Còn dùng link menu bình thường thì không được, vì nó redirect đi một nơi khác nên việc remove và add đó khôgn còn tác dụng gì nữa
Bài liên quan
0