任何机会都有解决这个问题的方法:
我的元素有ID,例如“x_y_z”。唯一的部分是“x_y”,因此没有两个项目具有相同的x和y组合。
然而,使用getElementById将不起作用,因为当我这样做时,我只有“x”和“y”部分而不是Z(将Z视为随机增量计数器)。
有解决方法吗?所以,当我有“x”和“y”时,我会说像getElementByIdContains(“x_y”)?
谢谢!
答案 0 :(得分:8)
虽然以下答案表明jQuery的"attribute-starts-with selector"是正确的(并且很有用:一定要检查出来!),但这并不神奇。如果您还没有包含78k的JS来执行此查询,则没有理由。
document.getElementsByIdPrefix = function( idPrefix, tagName ){
if (!tagName) tagName = '*';
if (document.querySelectorAll){
return document.querySelectorAll(tagName+"[id^="+idPrefix+"]");
}else{
var all = document.getElementsByTagName(tagName);
var results = [];
for (var i=0,len=all.length;i<len;++i){
if (all[i].id.indexOf(idPrefix)==0) results.push(all[i]);
}
return results;
}
}
...
var xys = document.getElementsByIdPrefix( 'x_y', 'input' );
使用jQuery或者这样,如果您可以提供所有元素将共享的标记名称,您将提高性能。
修改:添加了性能改进,以便在出现时使用document.querySelectorAll
。
答案 1 :(得分:3)
如果可以使用jquery,请使用jquery通配符选择器 -
$("input[id^=x_y]");
http://www.emadibrahim.com/2009/07/25/jquery-wildcard-selector/
否则,您必须获取(特定标记的)所有元素并检查它们是否匹配。
答案 2 :(得分:0)
看看jQuery库,它的选择器能够做你想要的。