我正在用100+输入元素重新配置一个复杂的超文本标记语言文档。我想快速找到任何id为空(<input type="text" name="something" id="" ...)、id只有空格(<button name="unimportant" id=" "...)或根本不知道(<select name="whatever"> )的元素,这样我就可以对源代码进行必要的更正。
我知道空id的选择器将是$('[id=""]'),但是如何使用一个选择器(或连接的选择器)获取所有目标元素?
示例HTML:
<form id="provision">
<input type="text" name="something" id="" value="blank id" /><br />
<input type="text" name="something2" value="no id" /><br />
<select name="something3"><option>No id</option></select><br />
<textarea name="something4" id="">Blank id</textarea><br />
<button name="something5" id=" ">whitespace id</button><br />
<button name="something6" id=" ">extra whitespace id</button><br />
<label><input type="radio" name="something7" id="
">Carriage return id</label>
</form>有关添加红色边框(.css('border-color', 'red'))的示例,请参阅http://jsfiddle.net/jhfrench/VNdL6/。
发布于 2013-01-17 00:46:23
您可以使用filter()过滤掉ids为空或ids由空格组成的元素。您可以在filter函数中根据需要应用复杂的filter。
$(':input').filter(function(){
if($.trim(this.id).length == 0)
return $(this);
}).css('border-color', 'red')发布于 2013-01-17 00:45:14
用逗号分隔选择符:
$("[id=''], [id=' '], :not([id])").css("border-color", "red");另一种选择是使用过滤:
$("[id]").filter(function() {
return $.trim(this.id) === "";
}).add(":not([id])").css("border-color", "red");发布于 2013-01-17 01:38:47
为了避免无效I的潜在问题,以及querySelector或其jQuery等效项产生的不可预测的行为,这可能会影响@VisioN的解决方案,我可能会尝试如下所示
[].concat(document.getElementsByTagName("input")).forEach(function(elt){
if(elt.hasAttribute("id") && /^\s*$/.test(elt.getAttribute("id")) {
elt.removeAttribute("id");
}
});或者,如果您不在ECMAScript5环境中,则执行等效操作。
这大致等同于@Adil正在做的事情,尽管它删除了无效的it,而不仅仅是设置它们的边框颜色属性。
然后,可以使用CSS规则进行着色
input:not([id]) { border-color: red; }https://stackoverflow.com/questions/14363365
复制相似问题