代码之家  ›  专栏  ›  技术社区  ›  RWendi

如何在ASP.NETMVC中使用jquery将css类应用于html元素?

  •  1
  • RWendi  · 技术社区  · 17 年前

    我正在尝试实现一个选项卡菜单,就像Stack Overflow中的一样。我创建了一个HTML列表,并使用CSS将其样式设置为类似于选项卡菜单。我把HTML列表放在母版页上。现在,用户单击列表后,如何更改列表的颜色?

    例如,如果单击堆栈溢出“用户”选项卡菜单,它将重定向到“用户”索引视图,然后将选项卡菜单的颜色更改为橙色。我如何做到这一点?

    4 回复  |  直到 14 年前
        1
  •  3
  •   Chris James    17 年前

    您不应该也不应该为此使用Jquery。原因是您的描述中没有明确的理由实际使用Javascript。

    您需要在母版页上动态设置“当前页面”按钮的类,如下所示:

    <li class="selected">Home</li>
    <li>Users</li>
    ...
    

    您可以通过访问找到当前URL

    Request.Url
    

    这里不需要javascript。我也喜欢JQuery,但人们常常试图为使用它寻找借口,而不是使用一个简单、更易访问的解决方案。记住,不是每个人都可以使用Javascript

        2
  •  0
  •   Mutation Person    17 年前

    可以使用以下函数添加/删除类:

    $("#MyElement").addClass(classname);
    $("#MyElement").removeClass([classname]);
    $("#MyElement").toggleClass(classname);
    

    http://docs.jquery.com/Attributes/toggleClass

        3
  •  0
  •   dcharles    17 年前

    SO上顶级导航的HTML源在 面积:

    <ul>
        <li class="youarehere"><a href="/questions">Questions</a></li>
        <li><a href="/tags">Tags</a></li>
        <li><a href="/users">Users</a></li>
        <li><a href="/badges">Badges</a></li>
        <li><a href="/unanswered">Unanswered</a></li>
    </ul>
    

    注意 youarehere 类附加到 li 包含 问题 文本该类后面的CSS定义将“按钮”变成橙色。这个 类(或项目的等效类)可以通过母版页中的服务器代码添加,或者如James Wiseman所指出的,通过浏览器中的jQuery添加。

        4
  •  0
  •   David Glenn    17 年前

    我不能这么说,但通常的工作方式是为每个页面生成不同的HTML,如下所示:

    <ul class="tabs>
      <li><a href="/tab1">Tab 1</a></li>
      <li class="on"><a href="/tab2">Tab 2</a></li>
      <li><a href="/tab3">Tab 3</a></li>
    </ul>
    

    其中class=“on”表示所选选项卡的不同样式。现在,您并不是真的希望对每个页面都执行此操作,因此可以将其放置在母版页中,如:

    <ul class="tabs>
      <li <%= ViewData["CurrentTab"] == "Tab1" ? "class=\"on\"" : "" %>><a href="/tab1">Tab 1</a></li>
      <li <%= ViewData["CurrentTab"] == "Tab2" ? "class=\"on\"" : "" %><a href="/tab2">Tab 2</a></li>
      <li <%= ViewData["CurrentTab"] == "Tab3" ? "class=\"on\"" : "" %>><a href="/tab3">Tab 3</a></li>
    </ul>
    

    然后在每个控制器操作中设置要选择的选项卡的值,如下所示:

    ViewData["CurrentTab"] = "Tab2";
    

    您可以在母版页中测试当前URL,但如果多个URL突出显示同一选项卡,则此方法提供了更大的灵活性。

    我不认为需要客户端设置,但如果您需要使用JQuery,如James Wiseman所说:

    $("#Tab1").addClass('on');  // or
    $("#Tab1").removeClass('on');  // or
    $("#Tab1").toggleClass('on');