jQuery如果/else语句匹配通配符CSS名称
-
12-10-2019 - |
题
我正在尝试在jQuery中编写一个if/else语句,该语句可以通过匹配“或“ out”(在这种情况下)来更改元素类。
例如,我有几个 <DIV>
和 class='IN-something'
或者 class='OUT-something'
.
如果我知道确切的CSS课程,以下是可行的,但是我只知道它包含在“或“ OUT”中)。
所以这样的事情:
if ($(jRow).hasClass('IN-*'))
{jRow.attr( "class", "OUT-foo" );}
else
{jRow.attr( "class", "IN-foo");}
想法?谢谢!
解决方案
if ($(jRow).attr('class').indexOf('IN-') !== 1)
{jRow.attr( "class", "OUT-foo" );}
else
{jRow.attr( "class", "IN-foo");}
其他提示
您可以使用 attribute-contains-prefix-selector
(文档) 如果那将是整个班级价值 (或至少那是一流的).
if ($(jRow).is('[class |= IN]')) {
这也使用 is()
(文档) 查看是否的方法 jRow
是一场比赛。
编辑:
如果你的意思是你不会知道什么 foo
是,您需要保留它,我会做这样的事情:
jRow.attr('class', function(i,cls) {
return cls.indexOf('IN') > -1 ? cls.replace('IN','OUT') : cls.replace('OUT','IN');
});
您可以将函数作为第二个参数传递给 attr()
(文档) 方法。该功能具有2个参数。第一个是迭代中的当前索引。第二个是属性的当前值。
返回值是将要设置的值。
使用jQuery数据存储“在”或“ out”中存储,或者使用适合业务的名称添加您自己的属性,该名称在“或“ OUT”中。这里真正的问题是组合classNames。
你也可以突破 IN
和 OUT
并使用多个类。
<tr class = "IN foo"/>
if( $obj.hasClass("in") ){ $obj.removeClass("in").addClass("out") }
var class = $(jRow).attr('class');
if (class.search("IN\-.*")) {
jRow.attr( "class", "OUT-foo" );
}
else {
jRow.attr( "class", "IN-foo");
}
不隶属于 StackOverflow