我希望在<a> tag under that </a> </li> <li> <a> tag is clicked</a> </li>时将活动课程添加到<li>标签

时间:2014-12-15 16:35:26

标签: javascript jquery

我的index.html具有以下DOM结构:

ul -> class:nav nav-tabs -> li -> a  

如果点击.active中的<li>元素,我想将<a>类添加到<li>元素。我已经编写了这段代码,但它无效:

main.js

var main = function(){
    $("a").click(function() {
        $('li').removeClass('.active');
        $(this).addClass(".active"); 
    });
};
$(document).ready(main);

4 个答案:

答案 0 :(得分:5)

试试这个:

var main = function(){
   $("a").click(function() {
      //travel up the DOM tree to the "closest" li element, add "active" class to it
      $(this).closest('li').addClass("active"); 
   });
};

$(document).ready(main);

所以你关闭了,但是你有几个问题:

  1. 您希望将新的active类应用于包含li,而不是。{ 到被点击的a
  2. addClass()removeClass()不需要以.为前缀。

答案 1 :(得分:2)

.name选择器,用于查找类name的元素。 addClassremoveClass期望类名,而不是选择器。要添加一个&#34;活动&#34;类,只需为其指定字符串"active"

$(this).addClass('active')

您还要将该类直接添加到已单击的链接中。如果要将其添加到包含<li>,请使用:

$(this).parent().addClass('active')

答案 2 :(得分:2)

您尝试操纵li,但操纵a标记。

您需要使用:

$(this).closest('li').addClass("active");

修改

并且不会像其他人提到的那样使用.字符

答案 3 :(得分:0)

您需要提及没有.

的班级名称
$(this).addClass("active");