javascript - 如何通过类名的第一部分选择最接近的元素?
问题描述
我有一张桌子的这一部分
<tr class="getmoreinfo_19">
<td> </td>
<td colspan="3">
<div class="alert alert-warning alert-dismissible fade show" role="alert">
<i class="far fa-window-close getmoreinfo_x"></i>txt
</div>
</td>
</tr>
现在我想在点击"<i class="far fa-window-close getmoreinfo_x"></i>"
图标时隐藏它。
为此,我想切换一个display:none
类。
我的问题是,我不知道如何选择最接近的“tr”,其类名以“getmoreinfo_”开头?
是否有可能,如果它如何?
非常感谢。
解决方案
如果您使用的是javascript,请尝试 .closest('tr[class^="getmoreinfo_"]')
,
请注意,这是假设单击的目标是<i>
并且元素在开始时tr
始终只有类。如果您有更多课程,请考虑使用:getmoreinfo_
tr
.closest('tr[class*="getmoreinfo_"]')
<table>
<tr class="getmoreinfo_1" data-row="1">
<td>
<div class="item"><span></span><i class="icon-x">X</i></div>
</td>
</tr>
<tr class="getmoreinfo_1" data-row="2">
<td>
<div class="item"><span></span><i class="icon-x">X</i></div>
</td>
</tr>
<tr class="getmoreinfo_1" data-row="3">
<td>
<div class="item"><span></span><i class="icon-x">X</i></div>
</td>
</tr>
</table>
(function(){
const icons = document.querySelectorAll('.icon-x');
function clickHandler(event) {
const row = event.currentTarget.closest('tr[class*="getmoreinfo_"]');
console.log(`clicked: ${row.getAttribute('data-row')}`)
}
for(const icon of icons) {
icon.addEventListener('click', clickHandler);
}
})();
希望这有帮助
推荐阅读
- c++ - C++11 标准是否保证零值有符号整数的一元减号为零?
- java - 如何使浮动按钮消失android?
- c# - 是否有一种简单的方法可以在 System.Text.Json 的自定义转换器中手动序列化/反序列化子对象?
- python-3.x - 如何实现 f(k+1) = f(k)**2 + 3 * a(k) 之类的函数
- distributed-computing - 在 paxos 中,如果提议者在其提议被拒绝后出现故障,会发生什么情况?
- xcode - 当一个方法被弃用时,实际上会发生什么?
- reactjs - reactjs 环境下 document.getSelection 是如何工作的?
- javascript - 反应 src/ 之外的导入
- javascript - 在纯 JS 刽子手中防止重复输入字母的麻烦
- sql - 选择值为“如果 Id 存在于另一个表/视图中”的列