0

私はこれを間違って述べているかもしれませんが、コンテンツが外部 .jsp に (動的に) ロードされた後、ヒントのコンテンツを (JavaScript を使用して) 操作する方法はありますか?

表示されているアイテムのリストがあり、その一部を太字にしたいと考えています。レンダリングする前に、ID またはクラスをリスト内のこれらのアイテムのいずれかに個別に追加することはできません。基本的にデータダンプです

参考までに、JSF を使用して .jsp の項目を取得しています。項目は HTML でテーブルとしてレンダリングされます。

<h:panelGrid columns="1">
    <h:column>
        <h:selectManyCheckbox layout="pageDirection" value="#{advancedtoolscontroller.roleItems}">
            <f:selectItems value="#{advancedtoolscontroller.roleList}" />
        </h:selectManyCheckbox>
    </h:column>
</h:panelGrid>  

どんな助けでも大歓迎です...

4

1 に答える 1

0

h:selectManyCheckboxおよびすべての親UINamingContainerコンポーネント ( h:formh:dataTableなど) に一意のIDを割り当てる必要があります。このようにして、JSF はそれに応じてクライアント ID を生成します。そうしないと、JS で使用できない予測不可能なクライアント ID が自動生成されます。それらがどのように生成されたかを確認するには、Web ブラウザーでページを右クリックし、[ソースの表示]を選択します。

ただし、小さな注意点が 1 つあります。JSF では区切り文字:としてコロンを使用します。コロンは、CSS では使用できない文字です。とにかく CSS/jQuery でそれらを選択するには、バックスラッシュでエスケープする必要があります。例。UINamingContainerformid:checkboxidformid\:checkboxid

さらに、h:dataTableはデータテーブル ID の後にもう 1 つの識別子、つまり行インデックスをクライアント ID に追加しますformid:datatableid:0:checkboxid。しかし、生成された HTML 出力のパターンを見ると、それは十分に明白に見えるはずです。

次にh:selectManyCheckbox、すべてのチェックボックスに一意のクライアント ID と同じクライアント名を割り当てます。ここでも、生成された HTML 出力をチェックしてパターンを確認してください。

jQuery では、を使用しjQuery.filter()て、クライアント ID/名前の最後の部分に基づいて関心のあるチェックボックスを除外することもできます。

于 2010-01-07T20:21:58.047 に答える