JQuery if/else statement matching a wildcard CSS name
我尝试在jquery中编写if/else语句,它可以通过匹配"in"或"out"(在本例中)来更改元素的类。
例如,我有几个和
class='IN-something'或
class='OUT-something'。
如果我知道确切的CSS类,下面的内容就可以了,但我只知道它包含"in"或"out"。
所以像这样:
1 2 3 4
| if ($(jRow).hasClass('IN-*'))
{jRow.attr("class","OUT-foo" );}
else
{jRow.attr("class","IN-foo");} |
思想?谢谢!
1 2 3 4
| if ($(jRow).attr('class').indexOf('IN-') !== 1)
{jRow.attr("class","OUT-foo" );}
else
{jRow.attr("class","IN-foo");} |
- 因为您只需要一个布尔响应,所以这里的search是合适的方法。但是,在这种情况下,只要匹配的字符串继续计算为真,您的方法就可以正常工作。
- 为什么投反对票?
- 同意。。。这个答案是完全合法的(和我的一样),我们都投了反对票。我投了赞成票,萨弗拉兹。我怀疑有人(肯德尔先生?)竞争有点太激烈了。
- @多基图德:如果我没用你会做的,那就不值得投反对票!
- 重新阅读我的评论。我没有投你反对票。我投票支持你。
- 我就是你的答案是"0"而不是"1"的原因。
- + 1有效答案
- 这把我带到了我需要去的地方-谢谢!
- 顺便说一下,这个返回-1或0;(不是1或0,所以!==1将始终计算为真..)
你可以使用的attribute-contains-prefix-selector(文档),如果这将是全级的值(或在最小的那一级)。 </P >
1
| if ($(jRow).is('[class |= IN]')) { |
这也is()(文档)的使用的方法.如果这是一个jRow媲美。 </P >
点击这里对测试工作的实例。(jsfiddle) </P >
编辑: </P >
如果你的一点是,你不会知道你在foo,这些对retain它,我会做的某样本instead: </P >
1 2 3
| jRow.attr('class', function(i,cls) {
return cls.indexOf('IN') > -1 ? cls.replace('IN','OUT') : cls.replace('OUT','IN');
}); |
你可以通的功能作为第二研究参数对attr()(文档)的方法。这有2个参数的功能。第一流的指标,在迭代求解。第二研究的电流值的属性。 </P >
返回的值的值,那将是集。 </P >
- +1那是聪明的:)
- V聪明-在我的应用程序中,我故意替换"foo",在这种情况下,这是一个有用的代码。
使用jQuery的数据存储在"今天"或"外",或添加一个属性与一个你自己的商业逻辑的情况下说,"在那名"或"退出"。在真实的问题在这里混合的类名称。 </P >
你也可以打破的IN门诊和OUT和使用多类。 </P >
|
</P >
1
| if( $obj.hasClass("in") ){ $obj.removeClass("in").addClass("out") } |
- 真的?为两个合法答案投票,只是为了提升你的答案?来吧。
- 我没有投反对票,但是"你做错了"从来没有帮助过
- @你怎么知道谁投了反对票?只是想知道…我会投票给每个人,这样他们就不再抱怨他们的假想观点了!
- 不幸的是,这里的假设是我可以将类分开;我很感激你所说的,但是由于各种遗留的原因,我现在不能将它们分开……
- 是的,这个建议是有效的,但是"做错事"的态度是令人讨厌的。
- @亨特同意了。更新。
1 2 3 4 5 6 7
| var class = $(jRow).attr('class');
if (class.search("IN\-.*")) {
jRow.attr("class","OUT-foo" );
}
else {
jRow.attr("class","IN-foo");
} |
- 真的?两张反对票,只是为了准确回答那个人的实际问题?
- + 1有效答案
- 好的,如果你投了反对票,考虑以下几点:1。search和indexof->indexof之间的区别在这里更合适,因为我们这里不需要regex。2。搜索返回-1 on not found和-1 converted to boolean为true,因此您的答案永远不会起作用。三。在正则表达式中,连字符不需要转义,因为在字符类之外,连字符没有特殊的含义。有了3个缺陷和更好的答案,你最好删除你的答案。