【发布时间】:2021-05-01 22:25:06
【问题描述】:
选择 any 属性包含特定字符串的元素的最佳方法是什么?
如果我知道属性名称,我知道以下工作:
// Select any element where data-test attribute contains rbl-value
var items = $("*[data-test*='rbl-value']");
但我可以在任何属性中包含rbl-value,并且我希望能够处理这些元素/属性。
<div class="rbl-value:itemClass">
<p>Don't process me...</p>
<p data-inputname="rbl-value:inputName">data-inputname should be processed.</p>
</div>
假设有聪明的解决方案,它的性能如何?
【问题讨论】:
-
部分属性名称没有通配符选择器。见How to select value by attribute name starts with。如果你不能缩小容器、类或标记名的范围,性能就不会很好,否则你需要遍历整个 DOM 并检查每个元素的属性
-
我害怕那个。
-
没有 "any attribute's value" 选择器。所以你运气不好。如果您不了解您的选择器 - 在构建该应用程序时似乎没有系统化。或者是 XY problem.
-
另外,“处理那些元素/属性”是什么意思?
-
想想像 angular/react/vue 这样的东西,他们可以在属性中添加像 {{expression}} 这样的东西。我假设这些是元素/属性组合的固定列表?
标签: jquery