javascript - 如何获得div的顶级父级
问题描述
我想知道如何获得 div 的顶级父级。我知道你可以使用parent()
,但我对多个 div 有点击功能
<div class="parent" data-row="1">
<div class="cat div1">
<div class="sub-cat div1_1">content</div>
<div class="sub-cat div1_2">content</div>
<div class="sub-cat div1_3">
<div class="inner-cat 1_3_3">innercontent</div>
</div>
</div>
<div class="cat div2">
<div class="sub-cat div2_1">content</div>
</div>
</div>
假设我有一个父 div,其父类名称还包括data-row
.
我在 ,上有点击功能.sub-cat
,但是,我希望每次点击都能获得该功能。.inner-cat
.cat
data-row
我已经尝试通过使用来获取父 div 来检索数据行$(this).closest('.parent')
,但这不起作用,因为它返回 length 0
。
解决方案
为此,您可以使用closest()
. parents()
是一种替代方法,但closest()
在第一场比赛中停止时表现更好。
$('.cat, .innercat, .sub-cat').click(function(e) {
e.stopPropagation();
var row = $(this).closest('.parent').data('row');
console.log(row);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="parent" data-row="1">
<div class="cat div1">
<div class="sub-cat div1_1">content</div>
<div class="sub-cat div1_2">content</div>
<div class="sub-cat div1_3">
<div class="inner-cat 1_3_3">innercontent</div>
</div>
</div>
<div class="cat div2">
<div class="sub-cat div2_1">content</div>
</div>
</div>
还要注意stopPropagation()
在事件处理程序中使用 来阻止事件冒泡并被嵌套元素捕获。
推荐阅读
- javascript - 使用 ajax 或 javascript 将值从 window.prompt 传递到服务器
- javascript - Bootstrap Typeahead 在我的场景中仅单击两次,需要动态处理 20 行
- jquery - 如何强制我的搜索输入字段忽略非拉丁字符?
- mongodb - mongostat 报告的“命令”操作的数量是多少?
- matlab - 使用 Matlab 在循环内更改循环
- java - 带有文件上传器的 JUnit forRest API 失败并出现 406 错误
- php - 如何替换 Symfony 4 函数中的变量?
- html - 在页面加载开始视图在容器的正确位置,但保留文本 ltr
- python - selenium.common.exceptions.SessionNotCreatedException:消息:无法找到与 GeckoDriver、Selenium 和 Firefox 匹配的一组功能
- python - 无论键的位置如何,都更新字典值