0

私の最初の質問。また、私の英語は私が良いと表現できるものであるため、寛容にしてください(より良い言葉はわかりません:))。

私はphpを使用して、異なるスタイルのテーブル行を生成しています。

if ($n % 2 == 0)
    $tr_class = ' class="package_' . $p->package_id . ' alt"';
else {
    $tr_class = ' class="package_' . $p->package_id . '"';
}

<tr<?php echo $tr_class ?>

クラスがある各行の5番目のセルで入力フィールドを選択しpackage_{number here}、それにいくつかのスタイルを追加したいと思います。そうするために、私はそのステートメントを使用します:

$('tr.package_' + package_errors_ids[i] + ' td:nth-child(5) input[type=text]').css('border', '1px solid red');

しかし、2番目のクラス(.alt)ではこれを行うことができません。そのステートメントを変更する方法がわかりませんが、これを実現します。手伝ってくれませんか?:)

書くのを忘れました。それは動作しますが、毎回ではありません。Package_errors_idsは、ユーザーの無効なパッケージを区別するための一意のIDを作成するために使用する番号を含む配列です。2つの行が無効な場合(1つは.altクラスを持っている)、両方がこのコードの影響を受けますcss('border', '1px solid red');。ただし、1つが有効な場合、これらの行のいずれも影響を受けません。

編集:JavaScript配列を使用せずにコードを生成するために、jsとphpの混合コードを簡略化しました http://jsfiddle.net/TAdsT/7/

この単純化とWebブラウザーのキャッシュのクリアの後、正しく機能します。ご意見ありがとうございました。コードは次のとおりです(jsfindle.netがそれを消去する場合):

<script type="text/javascript">
$(document).ready(function() {
<?php
$count = count($this->package_errors_ids);
if ($count > 0)
{
    for ($i = 0; $i < $count; $i++)
    {
        echo "$('tr.package_" .
            (int) $this->package_errors_ids[$i] .
            " td:nth-child(5) input[type=\"text\"]').css('border', '1px solid red');\n";
    }
}
?>
});
</script>
4

2 に答える 2

1

私はこれを見ています:

// in PHP
$('tr.package_' + package_errors_ids[i] + ' td:nth-child(5) input[type=text]')

それはこのようなものを生成するでしょう、私は仮定します:

// after PHP
$('tr.package_1 td:nth-child(5) input[type=text]')

を選択しても問題はありません<tr class="package_1 alt">。全く問題ありません。HTMLが正しく生成されていると仮定すると、それは他の何か間違ったことをしていることを意味します。そして、私はそれがこの部分であると仮定するつもりです:

input[type=text]

これをに変更してみてください

input[type="text"]
于 2012-10-10T18:58:43.530 に答える
0

両方のクラスを使用して要素にアクセスする場合は、これを試してください

$('tr.package_' + package_errors_ids[i] + '.alt td:nth-child(5) input[type=text]')                   
   .css('border', '1px solid red');
于 2012-10-10T19:38:23.063 に答える