首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何返回没有ids、空ids或空白ids的元素?

如何返回没有ids、空ids或空白ids的元素?
EN

Stack Overflow用户
提问于 2013-01-17 00:44:08
回答 3查看 108关注 0票数 2

我正在用100+输入元素重新配置一个复杂的超文本标记语言文档。我想快速找到任何id为空(<input type="text" name="something" id="" ...)、id只有空格(<button name="unimportant" id=" "...)或根本不知道(<select name="whatever"> )的元素,这样我就可以对源代码进行必要的更正。

我知道空id的选择器将是$('[id=""]'),但是如何使用一个选择器(或连接的选择器)获取所有目标元素?

示例HTML:

代码语言:javascript
复制
<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/

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-17 00:46:23

您可以使用filter()过滤掉ids为空或ids由空格组成的元素。您可以在filter函数中根据需要应用复杂的filter。

代码语言:javascript
复制
$(':input').filter(function(){
     if($.trim(this.id).length == 0)
           return $(this);
}).css('border-color', 'red')
票数 1
EN

Stack Overflow用户

发布于 2013-01-17 00:45:14

用逗号分隔选择符:

代码语言:javascript
复制
$("[id=''], [id=' '], :not([id])").css("border-color", "red");

另一种选择是使用过滤:

代码语言:javascript
复制
$("[id]").filter(function() {
    return $.trim(this.id) === "";
}).add(":not([id])").css("border-color", "red");
票数 3
EN

Stack Overflow用户

发布于 2013-01-17 01:38:47

为了避免无效I的潜在问题,以及querySelector或其jQuery等效项产生的不可预测的行为,这可能会影响@VisioN的解决方案,我可能会尝试如下所示

代码语言:javascript
复制
[].concat(document.getElementsByTagName("input")).forEach(function(elt){
    if(elt.hasAttribute("id") && /^\s*$/.test(elt.getAttribute("id")) {
        elt.removeAttribute("id");
    }
});

或者,如果您不在ECMAScript5环境中,则执行等效操作。

这大致等同于@Adil正在做的事情,尽管它删除了无效的it,而不仅仅是设置它们的边框颜色属性。

然后,可以使用CSS规则进行着色

代码语言:javascript
复制
input:not([id]) { border-color: red; }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14363365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档