如何选择只有一个元素
我有一个表头单元格,同时具有格式和功能类别,像这样的一些类:如何选择只有一个元素
<th class="persistent optional some-other-classes">
我想持续和可选复制到所有下表细胞,但具有选择适当的类
我想这是一个困难时期,但它不会让我在任何地方......
$('th, TH').filter('.persistent, .optional')
有没有办法只抓住这两个班,而没有参考一些其他类的名称?
感谢您的帮助!
编辑:更多信息
项目将有超过3类。我只是想复制/粘贴的执着和可选的类,它处理表的外观,并留下格式类
它应该是这样的:
$('th, TH').attr(class).filter('.persistent, .optional')
不,当然工作。
很多插手之后,这是我的解决方案,它的工作原理:
var classes = "",
allClasses = th.attr("class").split(/\s+/);
for (var j = 0; j < allClasses.length; j++) {
if (allClasses[j] === 'persistent' || allClasses[j] === 'optional') {
classes = classes+" "+allClasses[j]
}
}
console.log(classes)
// returns "persistent optional" or "persistent" or "optional"
// leaves away all other classes
如果有更简单的方法来过滤这两个班级,我会很乐意将答案给予某人。
感谢您的所有努力,并遗憾地没有准确地告诉我需要什么。
我已经更新了我的答案,根据我认为你的要求是什么,*希望*比上面简单。 – 2012-01-05 15:16:39
只选择类持久性和可选的元素,试试这个:
$('th[class="persistent optional"], th[class="optional persistent"]')
它不会工作,它会有更多的空间。如果您需要处理这样的情况下传递函数的过滤器:
$('th').filter(function(){
return this.className.match(/^\s*(persistent\s+optional|optional\s+persistent)\s*$/);
})
对于路口你需要filter('.persistent.optional')
,没有空间没有逗号。
看到我上面的评论。我需要得到一个只包含persisten和可选的选择。 – frequent 2012-01-05 10:26:03
下面将匹配要么类th
元素:
$('th.persistent, th.optional');
或匹配同时具有th
元素:
$('th.persistent.optional');
或者,得到的仅具有持续性的一类元素或只有可选或只有两个:
$('th.persistent, th.optional').filter(function() {
var classes = this.className.split(/\s+/);
return classes.length == 1 || (classes.length == 2 && $(this).is('.persistent.optional');
};
更新
好吧,我想我明白你的要求了 - 如果一个表头是.optional
列中的所有td
元素也应该有.optional
类,同样为.persistent
:
$('th.persistent, th.optional').each(function() {
var th = $(this);
var col = th.parent().children().index(th);
th.closest('table').find('td').each(function() {
var td = $(this);
if (td.parent().children().index(td) === col) {
if (th.is('.persistent')) td.addClass('persistent');
if (th.is('.optional')) td.addClass('optional');
}
});
});
正确。看起来不错。谢谢! – frequent 2012-01-05 19:11:49
我已经创建了一个jsfiddle来选择只包含指定类的项目。
这里是样本HTML
<div class="a1 a2 b">
1
</div>
<div class="a1 a2">
2
</div>
这里是JS代码
$('div.a1.a2').filter(function(){
return $(this).attr('class').split(' ').length ==2
}).text("this one");
你指的是具有* both *类的物品,不包括仅包含其中之一的物品? – 2012-01-05 10:11:13
我需要将** persistent **和** optional **复制到下面的所有表格单元格。所以我的选择必须是“选择与永久和可选匹配的所有th类。希望已经够清楚了。 – frequent 2012-01-05 10:14:29
@通常很清楚,你想最终得到的元素只有** **'可选'(如果存在)和'持久'(如果存在)类。正确? – Viruzzo 2012-01-05 10:40:41