Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击内部标记时向li添加类_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 单击内部标记时向li添加类

Javascript 单击内部标记时向li添加类,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我想在单击标记时向li添加一个类。我正在使用jQuery addclass,但不确定如何将其添加到li <ul class="nav"> <li class=""> <!---------add class to here----> <a href="default.asp">Home</a> <!-------- when this is clicked----> <ul> <

我想在单击标记时向li添加一个类。我正在使用jQuery addclass,但不确定如何将其添加到li

<ul class="nav">
 <li class=""> <!---------add class to here---->
   <a href="default.asp">Home</a> <!-------- when this is clicked---->
   <ul>
       <li><a href="news.asp">link 1</a></li><!-------- but NOT when this is clicked----->
       <li><a href="news.asp">link 2</a></li>
       <li><a href="news.asp">link 3</a></li>
   <ul>
 </li>
 <li><a href="news.asp">News</a></li>
 <li><a href="contact.asp">Contact</a></li>
 <li><a href="about.asp">About</a></li>
</ul>
我希望这是有道理的


提前感谢

您可以通过添加以下单击功能来实现

$("ul.nav > li > a").click(function(){
     $(this).parent().addClass("your_class");
});

您可以通过添加以下单击功能来实现

$("ul.nav > li > a").click(function(){
     $(this).parent().addClass("your_class");
});

可以使用直接子选择器以所有直接子元素为目标:

$('.nav > li > a').click(function(){
  $(this).parent().addClass('smclass')
});

可以使用直接子选择器以所有直接子元素为目标:

$('.nav > li > a').click(function(){
  $(this).parent().addClass('smclass')
});

为了提高效率,您应该使用一个附加到
.nav
元素的委托事件处理程序:

如果希望所有同级元素删除该类,请使用
not

e、 g

注意:带有
.nav>li
(强调
)的答案仅适用于顶级链接。您需要澄清您是否希望在所有链接上都有相同的行为(本例目前就是这样做的)

如果您只希望它在顶级链接上工作,那么它将是

    $('.nav').on('click', '> li > a', function(){
          var $li = $(this).parent();
          $li.siblings().not($li.addClass('smclass')).removeClass('smclass');
    });

为了提高效率,您应该使用一个附加到
.nav
元素的委托事件处理程序:

如果希望所有同级元素删除该类,请使用
not

e、 g

注意:带有
.nav>li
(强调
)的答案仅适用于顶级链接。您需要澄清您是否希望在所有链接上都有相同的行为(本例目前就是这样做的)

如果您只希望它在顶级链接上工作,那么它将是

    $('.nav').on('click', '> li > a', function(){
          var $li = $(this).parent();
          $li.siblings().not($li.addClass('smclass')).removeClass('smclass');
    });

嵌套链接的行为应该如何,这个问题是不明确的。您也需要包括您的第一个答案(以防万一):)非常感谢,这很有效,但是如果类已添加到另一个li中,我如何使其删除该类?@TrueBlueAussie:太好了……您知道了:)嵌套链接的行为问题模棱两可。你也需要包括你的第一个答案(以防万一):)非常感谢,这很有效,但是如果该类已添加到另一个li中,我如何使其删除该类?@TrueBlueAussie:太好了……你明白了:)忍者回答。作为补充,以下是关于此
parent()
选择器的文档。您是否希望嵌套链接也将类添加到它们的直接LI中?这改变了answer.HTML错误,内部列表的最后一个
应该是
。为您添加了关闭注释中要求的匹配类的版本,但是每个人都太忙了,没有注意到早期的答案:)首要工作:-)非常感谢:-)忍者答案。作为补充,以下是关于此
parent()
选择器的文档。您是否希望嵌套链接也将类添加到它们的直接LI中?这改变了answer.HTML错误,内部列表的最后一个
应该是
。为您添加了关闭注释中要求的匹配类的版本,但每个人都太忙了,没有注意到早期答案:)最重要的工作:-)非常感谢:-)