我正在尝试在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 是一场比赛。

单击此处测试一个工作示例。 (JSFIDDLE)


编辑:

如果你的意思是你不会知道什么 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。

你也可以突破 INOUT 并使用多个类。

<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");
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top