2012-04-28 21 views
2

リストの最初の要素に異なるスタイルを適用しようとしています。VisualForce - 条件付きHTMLタグ

私は現在class場合にのみ、cnt==0liを適用するためにカウンタを使用しようとしていますが、私はOutputTextタグに<>括弧を含めることはできません。角かっこをエスケープするか、条件を使用して<li>タグにclassを挿入する方法はありますか?

JavaScriptを使用した後でこれを行うことができますが、むしろ避けたいと思います。

<apex:variable var="cnt" value="{!0}" /> 
<apex:repeat value="{!items}" var="item" > 
    <!-- only render the class if it is the first element --> 
    <apex:OutputText value="<li class="activeLI">" rendered="{!cnt==0}" /> 
    <apex:OutputText value="<li>" rendered="{!cnt!=0}" />   

     <img src="{!$Resource[item.Image__c]}" width="85" height="90"/> 
    </li> 
    <apex:variable var="cnt" value="{!cnt+1}"/> 
</apex:repeat> 

答えて

4

Visualforceは厳密で、すべての要素には開始タグと終了タグが必要です。また、自己閉じでなければなりません。コンパイルされたとき、それが唯一のクロージング「LI」タグではなく、条件付き開口部「LI」タグを見るように、Visualforceのは文句を言うでしょう、1つの解決策は、次のようにクラス名に変数を作ることです。

<apex:variable var="cnt" value="{!0}" /> 
<apex:variable var="class" value=""/> 
<apex:repeat value="{!items}" var="item" > 
    <apex:variable var="class" value="activeLI" rendered="{!cnt==0}"/> 
    <apex:variable var="class" value="" rendered="{!cnt!=0}"/> 
    <li class="{!class}"> 
     ... 
    </li> 
    <apex:variable var="cnt" value="{!cnt+1}"/> 
</apex:repeat> 
+0

素晴らしいアイデア!私はカウンターをまとめて取り除き、それを定義するときに 'class'を' activeLI'に設定し、それが最初に使用された後に値を空にすることによって少し修正しました。このアイディアに感謝します。 – UserIsStuck

+0

ありがとうございました。 – manubkk

0

<apex:dataList>とお考えですか?私はそれがあなたがやろうとしていることを達成するかもしれないと思います。

1

あなたが考えることがありますCSSセレクタを使用していますか?ここでは、リストの最初の要素をスタイルする方法の例を示します。

<style> 
ul.myList > li:first-child {color : red} 
</style> 

<ul class="myList"> 
    <li>this is red</li> 
    <li>this has default formatting</li> 
</ul>