我有一个表头单元格,它有格式化和功能类,如下所示:
<th class="persistent optional some-other-classes">
我想将持久性和可选复制到以下所有表格单元格,但很难选择合适的类
我正在尝试这个,但它不会让我任何地方......
$('th, TH').filter( '.persistent, .optional')
有没有办法只抓住这两个类,而不是按名称引用 some-other-class ?
感谢您的帮助!
编辑:更多信息
项目将有3个以上的课程。我只想复制/粘贴处理表外观的持久化和可选类,并保留格式化类
应该是这样的:
$('th, TH').attr(class).filter( '.persistent, .optional' )
当然不起作用。
答案 0 :(得分:1)
以下内容将匹配具有以下任一类的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
类,类似于{{1} }:
.persistent
答案 1 :(得分:0)
要仅选择具有class persistent和optional的元素,请尝试以下方法:
$('th[class="persistent optional"], th[class="optional persistent"]')
它将无法使用它会有额外的空间。如果您需要处理此类情况,请将函数传递给过滤器:
$('th').filter(function(){
return this.className.match(/^\s*(persistent\s+optional|optional\s+persistent)\s*$/);
})
答案 2 :(得分:0)
对于需要filter('.persistent.optional')
的交叉点,没有逗号空格。
答案 3 :(得分:0)
您可以使用addClass()方法将类名分配给一组先前匹配的元素:
$("th").addClass("persistent optional")
答案 4 :(得分:0)
我创建了一个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");
答案 5 :(得分:0)
经过大量干预后,这是我的解决方案:
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
如果有更简单的方法可以过滤掉这两个课程,我很乐意为某人提供答案。
感谢您的所有努力,并且抱歉没有告诉我需要什么。