【发布时间】:2010-09-17 06:48:59
【问题描述】:
我有一些 ID 为“div1”、“div2”...“divx”的 DIV。我想对它们进行操作。有什么方法可以获取元素 ID .contains “div”。还有什么想法吗?
【问题讨论】:
标签: jquery css-selectors
我有一些 ID 为“div1”、“div2”...“divx”的 DIV。我想对它们进行操作。有什么方法可以获取元素 ID .contains “div”。还有什么想法吗?
【问题讨论】:
标签: jquery css-selectors
您可以使用starts with selector
$("div[id^='div']")
上面将抓取所有具有以字母div 开头的id 属性的div。
jsFiddle example that makes all divs with id div... invisible.
如果您想匹配 div 后跟数字而不是 div 后跟其他内容,以下是处理棘手情况的方法。所以div1 会匹配,但divx 不会。
在这种情况下,我们将filter() 与函数一起使用。当我们想要匹配时,该函数应该返回 true,而当我们不想要匹配时,该函数应该返回 false。 match() 和正则表达式对此非常有用(您可以使用 [0-9] 表示正则表达式中的数字或更简单的 [\d]):
$("div").filter(function() {
return $(this).attr("id").match(/^div[\d]+$/)
})
attr()返回指定属性的值,在本例中为id。
【讨论】:
你可以使用这个(虽然我还没有测试过):
jQuery("div[id^='div']")
这将获取所有div 元素以“div”开头的id。
如果您想要所有具有id 包含“div”的div 元素,那么您可以使用这个:
jQuery("div[id*='div']")
【讨论】:
使用 div1、div2、div3 之类的 ID 是一种不好的做法。这就像将您的类命名为“black-bold-12px”,然后将这些样式分配给该类。它错过了语义上的重点。
这样做的正确方法是为所有这些都使用一个类。
元素可以属于多个类,使用空格作为分隔符:
<div class="something usethis">...</div>
<div class="usethis something_else">...</div>
<div class="usethis">...</div>
<div class="something anotherclass usethis" id="someId">...</div>
<script>
$(".usethis").html("New contents for all of them!");
</script>
【讨论】:
post-1、post-23 等,其中数字是唯一的通用帖子标识符似乎完全合法且语义信息丰富......但是,是的,它是如果可能的话,使用经过深思熟虑的课程当然更容易。 ---- 然而,说到语义结构良好的页面,外部 Javascript 优于使用