首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择一个确切的元素,而不是它的子元素

问选择一个确切的元素,而不是它的子元素
EN

Stack Overflow用户
提问于 2010-08-07 21:24:01
回答 5查看 898关注 0票数 0

我有一个这样的菜单;

代码语言:javascript
复制
<ul>
 <li><a>1</a></li> 
 <li><a>2</a>
  <ul>
   <li><a>3</a></li>
   <li><a>4</a></li>
   <li><a>5</a></li>
   <li><a>6</a>
    <ul>
     <li><a>7</a></li>
     <li><a>8</a></li>
     <li><a>9</a></li>
    </ul> 
   </li>
  </ul>
  <li><a>10</li>
</ul>

如果我想用jQuery在第二层进行选择。

代码语言:javascript
复制
$('ul li ul li') { action() }

但是当我这样做的时候,这个动作也会被它的子节点所采用,(ul li ul li ul li)我不希望这种情况发生。

我只想选择(ul li ul li)。

使用jQuery,我如何让它工作?

EN

回答 5

Stack Overflow用户

发布于 2010-08-07 21:27:27

解决这个问题的最简单方法是给外部<ul>一个CSS类标识符或id。然后使用直接后代选择器

代码语言:javascript
复制
$('ul.className > li > ul > li') // CSS class className

或

代码语言:javascript
复制
$('#id > li > ul > li') // id id
票数 5
EN

Stack Overflow用户

发布于 2010-08-07 21:26:09

代码语言:javascript
复制
$('ul > li > ul > li').action()

但您需要以某种方式锚定顶级ul ...例如,使用ID。

代码语言:javascript
复制
$('#menu > li > ul > li').action()
票数 0
EN

Stack Overflow用户

发布于 2010-08-07 21:28:08

您所说的click处理程序是否只适用于元素本身,而不适用于其中包含的元素?我建议使用类,并向子元素添加一个单击处理程序,以防止使用stopPropagation冒泡事件。后者是必需的,因为当您单击内部元素时,事件也会在其父元素上触发。如果您真的只想在单击元素本身而不是它的子元素时调用处理程序,那么您需要停止该事件的冒泡。

代码语言:javascript
复制
$('ul.secondlevel li').click( function() {
     // do something
} );

$('ui.thirdlevel li').click( function(e) {
       // do something else
       e.stopPropagation();
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3430593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档