javascript - 根据 URL 更改更改 DOM 元素类名称

标签 javascript jquery html

我有一段代码可以获取 URL 中的任何哈希更改。

只要有人输入哈希值,它就会起作用并发出通知。

但是,我想更改容器的类名。当我尝试这样做时,它更改了所有类名称,我明白为什么。

有没有办法指定索引例如
$(".agenda-tabs li").this('class', 'active');

这是代码:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>jQuery Example</title>
        <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-1.6.1.min.js"></script>
        <script type="text/javascript" src="https://raw.githubusercontent.com/cowboy/jquery-hashchange/v1.3/jquery.ba-hashchange.min.js"></script>

        <script type="text/javascript">

        $(document).ready(function(){

            $( "#seminars" ).hide();
            $( "#speakers" ).hide();

            $(function(){

                // Bind the event.
                $(window).hashchange( function(){
                    // Alerts every time the hash changes!
                    var currenthash = location.hash;

                    $('.agenda-tabs').find('.ui-link').each(function(){
                        var innerDivId = $(this).attr('href');

                        if(innerDivId==currenthash)
                        {
                            $(".agenda-tabs li").attr('class', 'active');
                        }
                        else
                        {
                            $(".agenda-tabs li").attr('class', '');
                        }
                    });

                })

                // Trigger the event (useful on page load).
                $(window).hashchange();
            });

        });
        </script>
    </head>
    <body>

        <ul class="agenda-tabs nav nav-tabs">
            <li class="first-tab">
                <a class="btn btn-default ui-link" data-toggle="tab" href="#t1">
                City
                <span></span>
                </a>
                <div id='conference'>
                1
                </div>
            </li>
            <li class="active">
                <a class="btn btn-default ui-link" data-toggle="tab" href="#t2">
                Speakers
                <span></span>
                </a>
                <div id='seminars'>
                2
                </div>
            </li>
            <li class="last-tab">
                <a class="btn btn-default ui-link" data-toggle="tab" href="#t3">
                Stage
                <span></span>
                </a>
                <div id='speakers'>
                3
                </div>
            </li>
        </ul>

    </body>
</html>

最佳答案

您已经有一个 anchor <a>上下文变量中的元素 ( this )。您只需更改父元素 <li>

// get the parent li and set it as active
$(this).closest("li").addClass('active'); // Add

或者

// get the parent li and set it as active
$(this).closest("li").removeClass('active'); // remove

关于javascript - 根据 URL 更改更改 DOM 元素类名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28463170/

相关文章:

html - 我无法让我的一个 div 向左浮动,另一个向右浮动

JavaScript:检查cookie是否设置,并在刷新时将图像src更改为随机并且cookie不会过期

javascript - 如何使用javascript获取超出其容器的元素的宽度?

javascript - 当 javascript 尝试解析包含从 C# 发送的列表的对象时,CefSharp 崩溃

jquery - 模拟点击 &lt;input type =“file”/> jQuery、Opera

php - 获取 WooCommerce 可变产品单页中选定的产品变体 ID

html - CSS:最大宽度不在最大宽度上

javascript - 如何在 Magento 网站页面上找到脚本的源文件?

javascript - 如何从函数内引用对象属性(该属性也是服务工厂中的对象属性)

javascript - 如何修改此脚本以使用不同的颜色?