テーブル行に複数のクラスがあるjQuery:not()
-
06-07-2019 - |
質問
したがって、基本的には、jQueryを使用して行の色を交互に切り替え、色付けするテーブルに関連付けられているすべてのtrタグを選択してから、それに応じて色付けします。ただし、特定のtrに色を付けたくない場合があります。そのような場合、交互の色付けは特定のテーブル行をスキップする必要があります。この目的のために、<!> quot; rowSkip <!> quot;というクラスがあります。これは、色付けをスキップする必要があるすべての行に適用されます。
私はこれまで何ヶ月もこれを機能させていましたが、うまく機能しています...しかし、常に1つの問題がありました。テーブルの行に複数のクラスを適用する必要がある場合もありますが、色を付けたくない場合もあります。 jQueryは、これらの状況下でクラスセレクターに問題があるようです-それまたは私はここで簡単な何かを見逃しています...
EG:
<tr class="rowSkip">
-<!> gt;正常に動作します。
<tr class="rowSkip strong someclass1 someclass2">
-<!> gt;動作しません(<!> quot; rowSkip <!> quot;クラスが存在するにもかかわらず、まだ色が付いています)
これがなぜなのか、クラス属性を完全に取得し、スペースで分割し、それを繰り返してrowSkipの存在を確認するのにどのように回避するのか、誰にも分かりませんか?
コードは次のとおりです:
$("Table.alternate tr:not(.rowSkip)").each(function() {
//if(!$(this).hasClass("rowSkip")) { //Also tried this, and several other renditions to no avail.
$(this).addClass(i++ % 2 == 0 ? 'rowOff1' : 'rowOff2');
//}
});
ありがとう、 マーク
解決
これを試してください:
$("Table.alternate tr:not('[class*=rowSkip]')").each
クラスが常にrowSkipで始まる場合は、これを行うことができます
$("Table.alternate tr:not('[class^=rowSkip]')").each //looks for class names that starts with rowSkip
他のヒント
このためのjQueryセレクタービルド、:oddおよび:evenを確認することをお勧めします。次に、いくつかの方法があります。
$('table.alternating tr:odd td').css('background-color','#eee');
またはクラスを使用:
$('table.alternating tr:odd').addClass('odd');
およびいくつかのCSS:
tr.odd td { background-color: #eee }