gpt4 book ai didi

dart - Dart 中是否有相当于 jquery 的 "closest"

转载 作者:行者123 更新时间:2023-12-04 15:24:00 28 4
gpt4 key购买 nike

jQuery 有“closest”,它返回树中最接近匹配的祖先。是否有 Dart 等价物?我想让以下内容不那么脆弱:

e.target.parent.parent.nextElementSibling.classes.toggle('hide');

也许是这样的:
e.target.closest('div').nextElementSibling.classes.toggle('hide');

最佳答案

据我所知,没有内置函数。但是编码一些东西很容易。
findClosestAncestor()下面定义的函数查找给定祖先标签的元素的壁橱祖先:

<!DOCTYPE html>

<html>
<head>
<title>ancestor</title>
</head>

<body>
<div id='outer'>
<div id='inner'>
<p></p>
</div>
</div>

<script type="application/dart">
import 'dart:html';

Element findClosestAncestor(element, ancestorTagName) {
Element parent = element.parent;
while (parent.tagName.toLowerCase() != ancestorTagName.toLowerCase()) {
parent = parent.parent;
if (parent == null) {
// Throw, or find some other way to handle the tagName not being found.
throw '$ancestorTagName not found';
}
}
return parent;
}

void main() {
ParagraphElement p = query('p');
Element parent = findClosestAncestor(p, 'div');
print(parent.id); // 'inner'
}
</script>

<script src="packages/browser/dart.js"></script>
</body>
</html>

关于dart - Dart 中是否有相当于 jquery 的 "closest",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16445976/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com