【发布时间】:2013-06-24 23:30:17
【问题描述】:
获取所有类以input 开头的所有 div 的最佳方法是什么?换句话说,a 和 b 应该从下面返回,而不是 c。
<div id="a" class="input1 foo"></div>
<div id="b" class="foo input2"></div>
<div id="c" class="xinput3 foo"></div>
出人意料地被here接受的表面上的方法是做$("div[class^='input']");,但当然错过了b。当然$("div[class*='input']"); 会给c 一个误报。
我能想到的最好的就是这个怪物
function getAllInputDivs() {
return $("div").filter(function (i, currentDiv) {
return $.grep($(currentDiv).attr("class").split(" "), function (val) {
return val.substr(0, "input".length) === "input";
}).length > 0;
});
}
有没有更清洁的方法?这是上面的working fiddle
【问题讨论】:
-
当有 input1 和 input2 之类的东西时,我不认为类名是最好的选择。如果输入足够独特,可以以这种方式枚举,您可以使用 ID 或名称,可以使用
$("[id^=input]")选择 -
@KevinB - 你可能是对的。我不确定这是否有一个很好的用例。现在这只是一个理论上的问题,看看它是否可以做到。
-
类似问题:jQuery selector to target any class name (of multiple present) starting with a prefix? 但我之前没有自定义选择器表达式,所以我很喜欢这个问题的答案 :)
-
@BoltClock:自定义选择器中断
querySelectorAll。他们不值得。 -
@ЖΞЖΞЖΞЖΞЖΞЖΞЖΞЖΞЖΞЖΞЖΞЖΞЖΞЖΞЖ:确实如此。
标签: javascript jquery