创建一个 javascript 函数来根据单击的列表元素在列表元素之间切换类

发布于 2024-09-01 16:03:34 字数 1380 浏览 8 评论 0原文

我正在尝试创建一个函数来更改一系列 5 个列表元素的类,具体取决于单击的元素。目标是根据当前元素来更改元素的样式。

我尝试过这样的操作:

function addClass(obj)
{
 obj.className="highlight";
}

然后将其添加到我的元素中:

 onclick="addClass(this);

但这仅将类添加到列表中的第一个元素,然后在单击不同的元素时没有删除该类。

我的列表元素如下所示:

     <ul id="circularMenu">

        <a href="#strategy" onclick="addClass(this);"><li id="strategy_link"><h3>Strategy</h3></li></a>
        <a href="#branding"><li id="branding_link" onclick="addClass(this);"><h3>Branding</h3></li></a>
        <a href="#marketing"><li id="marketing_link" onclick="addClass(this);"><h3>Marketing</h3></li></a>
        <a href="#media"><li id="media_link" onclick="addClass(this);"><h3>Media</h3></li></a>
        <a href="#management"> <li id="management_link" onclick="addClass(this);"><h3>Management</h3></li></a>

     </ul>

当单击某个项目时,url 会发生变化,也许这可能是设置函数根据 url 更改类的方法?我对 javascript 非常陌生,任何有关如何完成这项工作的想法将不胜感激。

我当前的编码方式是在悬停时更改每个项目,但我希望更改保持不变,直到单击不同的项目。可以在这里查看:http://perksconsulting.com/dev/capabilties.php我指的项目是页面左侧的黑点。

I am trying to create a function to change the class on a series of 5 list elements depending on which has been clicked. The goal is to change the style of the element depending on which one is the current element.

I had tried something like this:

function addClass(obj)
{
 obj.className="highlight";
}

and then added this to my elements:

 onclick="addClass(this);

but this only added the class to the first element in the list and then did not remove the class when a different one was clicked.

My list elements look like this:

     <ul id="circularMenu">

        <a href="#strategy" onclick="addClass(this);"><li id="strategy_link"><h3>Strategy</h3></li></a>
        <a href="#branding"><li id="branding_link" onclick="addClass(this);"><h3>Branding</h3></li></a>
        <a href="#marketing"><li id="marketing_link" onclick="addClass(this);"><h3>Marketing</h3></li></a>
        <a href="#media"><li id="media_link" onclick="addClass(this);"><h3>Media</h3></li></a>
        <a href="#management"> <li id="management_link" onclick="addClass(this);"><h3>Management</h3></li></a>

     </ul>

When an item is clicked the url changes, maybe this could be the way to set up the function to change classes depending on the url? I am very new with javascript any ideas on how to make this work would be greatly appreciated.

The current way I have it coded is to change each item when hovered, but I would like the change to remain until a different item is clicked. It can be viewed here: http://perksconsulting.com/dev/capabilties.php The items I am referring to are the black dots on the left side of the page.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

尘世孤行 2024-09-08 16:03:34

首先,您应该使用 jQuery addClass() 方法。您不需要编写自己的(顺便说一句,您的 addClass() 实现有错误)。

试试这个:

function selectInList(obj)
{
    $("#circularMenu").children("a").removeClass("highlight");
    $(obj).addClass("highlight");
}

然后:

    <ul id="circularMenu">
        <a href="#strategy" onclick="selectInList(this);"><li id="strategy_link"><h3>Strategy</h3></li></a>
        <a href="#branding"><li id="branding_link" onclick="selectInList(this);"><h3>Branding</h3></li></a>
        <a href="#marketing"><li id="marketing_link" onclick="selectInList(this);"><h3>Marketing</h3></li></a>
        <a href="#media"><li id="media_link" onclick="selectInList(this);"><h3>Media</h3></li></a>
        <a href="#management"> <li id="management_link" onclick="selectInList(this);"><h3>Management</h3></li></a>    
     </ul>

或者更好的是,保持你的 html 干净,让 jQuery 简化事情:

    <ul id="circularMenu">
        <a href="#strategy"><li id="strategy_link"><h3>Strategy</h3></li></a>
        <a href="#branding"><li id="branding_link"><h3>Branding</h3></li></a>
        <a href="#marketing"><li id="marketing_link"><h3>Marketing</h3></li></a>
        <a href="#media"><li id="media_link"><h3>Media</h3></li></a>
        <a href="#management"><li id="management_link"><h3>Management</h3></li></a>
    </ul>

然后,在你的页面的某个地方:

$(document).ready(function()
{
   $("#circularMenu").children("a").click(function() { selectInList(this) });
});

First, you should use the jQuery addClass() method. You don't need to write your own (your addClass() implementation is buggy, by the way).

Try this:

function selectInList(obj)
{
    $("#circularMenu").children("a").removeClass("highlight");
    $(obj).addClass("highlight");
}

Then:

    <ul id="circularMenu">
        <a href="#strategy" onclick="selectInList(this);"><li id="strategy_link"><h3>Strategy</h3></li></a>
        <a href="#branding"><li id="branding_link" onclick="selectInList(this);"><h3>Branding</h3></li></a>
        <a href="#marketing"><li id="marketing_link" onclick="selectInList(this);"><h3>Marketing</h3></li></a>
        <a href="#media"><li id="media_link" onclick="selectInList(this);"><h3>Media</h3></li></a>
        <a href="#management"> <li id="management_link" onclick="selectInList(this);"><h3>Management</h3></li></a>    
     </ul>

Or even better, keep your html clean and let jQuery simplify things:

    <ul id="circularMenu">
        <a href="#strategy"><li id="strategy_link"><h3>Strategy</h3></li></a>
        <a href="#branding"><li id="branding_link"><h3>Branding</h3></li></a>
        <a href="#marketing"><li id="marketing_link"><h3>Marketing</h3></li></a>
        <a href="#media"><li id="media_link"><h3>Media</h3></li></a>
        <a href="#management"><li id="management_link"><h3>Management</h3></li></a>
    </ul>

Then, somewhere in your page:

$(document).ready(function()
{
   $("#circularMenu").children("a").click(function() { selectInList(this) });
});
只等公子 2024-09-08 16:03:34

试试这个。

 function addClass(obj)
    {

      $(obj).addClass("Highlight");
    }

Try this out.

 function addClass(obj)
    {

      $(obj).addClass("Highlight");
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文