javascript - JQuery 快捷方式选择父级的 sibling

标签 javascript jquery html

目前我正在使用这个

$('body').on('click', '#edit_card .ui.menu a.item', function() {
  tab = $(this).closest('.ui.tab.active');
  updateRelationshipsContentCard(tab);
});

尝试在单击 a 标签时选择事件选项卡,但没有找到任何内容,我的错误在哪里?

<div class="ui pointing secondary menu">
    <a class="item" data-tab="1">1</a>
    <a class="item active" data-tab="2">Pessoas</a> <- Clicked this
</div>
<div class="ui tab" data-tab="1">
    <div class="ui basic segment">
    </div>
</div>
<div class="ui tab active" data-tab="2"> <- Need to select this
    <div class="ui basic segment">
    </div>
</div>

我知道使用

tab = $(this).parent().parent().children('.ui.tab.active');

有效,但我不明白为什么使用closest不会

最佳答案

.closest() method将尝试选择与提供的选择器匹配的任何祖先元素。换句话说,它将遍历 DOM 树并搜索与提供的选择器匹配的祖先或父元素。

它在您的情况下不起作用,因为 .ui.tab.active 不是单击的 .item 元素的祖先。

如果您想使用 .closest() 方法,您可以使用它来选择最接近的 .ui.menu 元素,然后从那里选择同级元素.ui.tab.active 元素:

$(this).closest('.ui.menu').siblings('.ui.tab.active')

根据您的代码片段,您可能还可以选择最接近的 #edit_card 祖先元素,然后使用 .find() 选择事件选项卡:

$(this).closest('#edit_card').find('.ui.tab.active')

..或者由于 .ui.menu 元素是直接父元素,因此您只需使用 .parent().siblings() 方法在一起(假设标记没有改变):

$(this).parent().siblings('.ui.tab.active')

关于javascript - JQuery 快捷方式选择父级的 sibling ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41963820/

相关文章:

javascript - 向 FlatList 添加标题

javascript - jQuery 语法 : -linear-gradient ("color", 白色)以 "color"作为变量

php - Javascript 等待 PHP 函数返回

javascript - jQuery根据整数创建一定数量的元素

html - 如何在 asp.net web 表单中将 MultiView 与 TreeView 对齐?

html - 在 calc 中使用宽度

javascript - CSS选择每行的第一个div

javascript - Ajax 元素返回完整的 html 代码

javascript - 从 jquery 动画中排除元素

javascript - 修复 IE 的 div 宽度 @media 修复