0

jQuery を使用して、特定のテーブル行のセルにスタイルを与えようとしています。

問題は、属性を行ごとにチェックする必要があることです。期待どおりのものが見つかった場合は、現在の行のの行を再スタイルする必要があります。

次のコードを使用していますが、行のセルに対してのみ境界線を描画する代わりに、テーブル内のすべてのセルに対して境界線を描画します:

$(".some_class_for_every_row_in_the_table").each(function() {
    var control_variable = ... //This is the attribute
    if (control_variable) {
        $(previous_row).find('td').each(function() {$(this).css('border-bottom', "1px solid #AAAAAA")});
    }
    previous_row = this; 
...
})

これは、テーブルの HTML です。

<table>
    ...
    <tbody>
        <tr control_variable="...">
          <td>...</td>
        </tr>
        <tr control_variable="...">
          <td>...</td>
        </tr>
        ...
   </tbody>
</table>

control_variable正しい値で取得され、previous_row は常に一貫性を維持します。

質問の最初のバージョンで間違っていたらごめんなさい。

私のコードの問題は何ですか?

4

5 に答える 5

3

単に使用していない理由はありますか?

$('.some_class_for_rows td').css('border-bottom','1px solid #aaa');

JSフィドルデモ

これまでに疑似コードに近いものしか投稿していないため、これまでに何をしようとしているのかを推測します。次の例では、すべての tr要素を繰り返し処理し、属性data-controlVariableを評価し、存在する場合は追加します。rowBeforeControlVariable前の行へのクラス:

$('tr').each(
    function(i){
        if ($(this).attr('data-controlVariable')){
            $('tr:eq(' + (i-1) + ')').addClass('rowBeforeControlVariable');
        }
    });​

JSフィドルデモ

于 2012-06-23T15:55:34.177 に答える
1

何かのようなもの

$(".some_class_for_rows").each(function() { 
    $('td', this).css('border-bottom', "1px solid #AAAAAA");
})​;

動作するはずです

http://jsfiddle.net/NwWkk/

于 2012-06-23T15:54:16.720 に答える
1
$("table tr[control_variable=VALUE]").prev("tr").find("td").css( ... set your attribute ...);

http://jsfiddle.net/cranio/MvVgS/1/を参照

これは、制御変数の固定値に対して機能します。それらが異なる場合は、「.each()」に頼る必要があります。

于 2012-06-23T16:35:19.590 に答える
0

私はあなたのコードについて明確な考えを得ることができませんでした..しかし、このコードを試してください...'each'を使用すると、時々混乱します.....

すべての「tr」に同じクラス名がある場合は、これが役立ちます。

var len=$('.some_class_for_rows').length;
for(i=0;i<len;i++)
{
 var control_variable = ... //This is the attribute
 if (control_variable)
{
 $('.some_class_for_rows').eq(i).prev('tr').find('td').
 css('border-bottom', "1px solid #AAAAAA");
}
}
于 2012-06-23T18:37:45.000 に答える
0

マークアップを見ないとわかりにくいですが、テーブルの各行に同じクラス'some_class_for_rows'があると思います。

<table>
  <tr class="some_class_for_rows">
    <td>
    </td>
  </tr>
  <tr class="some_class_for_rows">
    <td>
    </td>
  </tr>
</table>

たった1行の場合、ターゲットに固有の何かが必要になります。例:

<table>
  <tr class="some_class_for_rows selected">
    <td>
    </td>
  </tr>
  <tr class="some_class_for_rows">
    <td>
    </td>
  </tr>
</table>

次に、次のコードを使用します。

$('.some_class_for_rows.selected td').css('border-bottom','1px solid #aaa');
于 2012-06-23T16:02:38.973 に答える