0

我正在使用以下脚本将单击的“导航”元素的类更改为导航栏中的“活动”类。

$('nav a').click(function(e) {
        e.preventDefault();
        $('nav a').removeClass('active');
        $(this).addClass('active');
    });

它在我的 jsFiddle 中被隔离时有效:

http://jsfiddle.net/shockabout/ECshM/

但它不适用于我的开发网站:

https://dl.dropboxusercontent.com/u/102203801/HTML/index.html

我找不到阻止应用“活动”类的原因。我必须添加所有父类吗?

4

2 回答 2

0

我刚刚将您的代码粘贴到主站点的控制台中,它运行良好。我确实在页面上注意到你有一个加载器。你确定 jQuery 代码在 nav 元素存在之前没有运行吗?

我认为正在发生的事情是页面加载,然后 DOM 在技术上已准备就绪,因此 jQuery 绑定了点击事件,但这些元素不存在,因为您有其他代码加载内容,所以 jQuery 实际上并没有绑定任何东西.

尝试将其稍微更改为

$("body").on("click", "nav a", function(e){
    e.preventDefault();
    $('nav a.active').removeClass('active');
    $(this).addClass('active');
});

那么它应该适合你

于 2013-05-05T19:13:20.310 回答
0

我认为它不起作用,因为这里的锚标记必须同时执行两项任务 1. 需要向其自身添加类 2. 需要将用户带到 id 位于锚标记的 href 中的 div

你可以试试这段代码。

它将绑定点击功能以激活锚标签,然后通过滚动效果将用户移动到新的 div。

$('nav li a').click(function(e) {
        e.preventDefault();
        $('nav a').removeClass('active');
        $(this).addClass('active');
        var id=$(this).attr('href');
       scrollToId(id);
    });

    function scrollToId(id){
                $('html, body').animate({
                    scrollTop: $(id).offset().top
                     }, 2000);    
    }
于 2013-05-05T19:23:59.980 回答