如何在Asp.Net中更改html元素(li)类

How to change html element ( li ) class in Asp.Net?

本文关键字:元素 html li Asp Net      更新时间:2023-09-26

我有一个包含多个元素li的列表ul(其id为menu_(,这些li最初在类in-active中,我希望当客户端单击一个li时重定向到另一个页面,然后将该li的CssClass更改为active
我尝试过这个JS代码,但没有成功,在客户端单击li后,它没有重定向到另一个页面(它仍然在同一页面中(:

$(function () {
    $('#menu_ li').click(function () {
        $("li.active").removeClass("active");
        $(this).addClass("active");
        return false;
    });
});

您可以在每个页面中执行此操作。

$("li.active").removeClass("active");
$( "ul#menu li:nth-child(n)" ).addClass("active");

将此代码保存在就绪事件中。

n是要将类添加到的li的数目。

您在这里混合了服务器端/客户端功能。您的JS代码纯粹是客户端代码,它会正确地切换类,但具有return false;意味着链接将不会被遵循,因此不会执行重定向(不会运行服务器端代码(。

您可以删除return false;,然后类将被更改将执行重定向,但一旦重定向完成,您就有了一个新页面,类更改将不会持续。

你基本上有三个选择:

  1. 在每个子页面中都有一个如Imadoddin-Ibn-Alauddin上面建议的JS代码,该代码负责在页面加载后将导航中的正确元素设置为活动。

  2. 以某种方式在请求之间保持状态,一旦添加了活动类,就将状态保存在cookie或本地存储中。然后,每次加载页面时,检查cookie/本地存储是否包含此类数据,并相应地更新状态。

  3. 更改服务器端导航的状态,以便在加载每个页面后,将活动类添加到相应的页面中。

我推荐选项3。

一句话:你不能像现在这样把事情搞混。返回错误的;将取消重定向。执行重定向后,将加载一个新页面,并重置导航,因此在执行重定向之前使用JS所做的任何更改都将消失。