jquery - Bootstrap twitter Active Navigation Bar - 使用 JQuery 更改类名

标签 jquery html css twitter-bootstrap

我正在使用 bootstrap twitter,我希望菜单中的不同站点在单击时显示为事件状态。我找到了问题 Bootstrap Twitter CSS Active Navigation处理这个问题。

我的问题是我无法在其中一个答案中使用 JQuery 函数。修改应该非常直接,以使其适用于我的情况,在 HTML 中是:

<script>
$('body').on('.nav li a', 'click', function()
{
    var $thisLi = $(this).parents('li:first');
    var $ul = $thisLi.parents('ul:first');
    if (!$thisLi.hasClass('active'))
    {
        $ul.find('li.active').removeClass('active');
        $thisLi.addClass('active');
    }
});
</script>

<ul class="nav nav-pills pull-left">
    <li class="active"> <a href="home.html">Home</a> </li>
    <li> <a href="about.html">About</a> </li>
</ul>

关于可能是什么问题的任何线索?提前谢谢你。

最佳答案

要在第一个答案的评论中回答您的问题,.parents('li') 会在您从当前位置向上移动 DOM 时找到任何 li parent 。添加 :first 伪选择器可确保找到第一个。

更好的解决方案是使用.parent(单数。)如:$thisLi.parent('ul')。我不相信那是你的问题......

有没有可能浏览器只是在加载一个新页面?我没有看到你调用 event.preventDefault(),事实上你没有在你的代码中捕获事件,你只是响应它......

此外,.on 是现在绑定(bind)到事件的首选方式:

$(function(){

    $('.nav li a').on('click', function(e){

        e.preventDefault(); // prevent link click if necessary?

        var $thisLi = $(this).parent('li');
        var $ul = $thisLi.parent('ul');

        if (!$thisLi.hasClass('active'))
        {
            $ul.find('li.active').removeClass('active');
                $thisLi.addClass('active');
        }

    })

})

关于jquery - Bootstrap twitter Active Navigation Bar - 使用 JQuery 更改类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15521283/

相关文章:

html - 图片和h1标签显示在同一行CSS

javascript - 如何从中心而不是边框​​开始插入框阴影?

javascript - jQuery fadeIn() 应该只显示一个 div,正在显示多个 div

javascript - 如何使用jquery隐藏父div中的任何子元素

PHP/HTML/CSS 表格滚动

html - 为什么在我的 list-style-image 属性中出现默认元素符号而不是图像?

javascript - 使用 fabric js 获取 Canvas 对象

javascript - Bootstrap 模态和 jQuery 上线(实时)

javascript - Safari : Disable form-submit on Enter?

html - 用完整的背景图像填充 svg 路径