0

短いバージョン: どのように (JQuery または他のセレクターを使用して) JSP 2.0 タグファイルのこのインスタンスによって作成された HTML 要素を選択できますか?

長いバージョン:

次のような JSP 2.0 タグファイルがあります。

<%@ tag body-content="empty" import="org.myapp.model.Question" %> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ attribute name="question" required="true" type="org.myapp.model.Question" %>

<div class='singleChoice'>
   <c:forEach items="${question.questionOptions}" var="option">
       <!-- display options... -->
   </c:forEach>
</div>

このタグは、特定のページで複数回使用できます。question.questionOptions のサイズが 3 未満の場合、このタグによって生成される「singleChoice」div に追加の CSS クラス (「compact」) を追加したいと考えています。questionOptions の長さをチェックし、必要に応じてクラスを div に追加するために、タグファイル (JavaScript、追加の JSTL、必要なものは何でも) にロジックを追加したいと思います。

次のように、スクリプトタグをタグファイルに追加できることを知っています。

<c:if test="${fn:length(question.questionOptions) < 3}"> 
    <script type="text/javascript">
    $(document).ready(function() {
        $('div .singleChoice').addClass('compact');
    });
    </script>
</c:if>

ただし、ドキュメント全体の準備ができたときに実行され、タグがページに複数回表示される可能性があるため、「compact」クラスのいずれかが適用基準を満たしている場合、ページ上のすべての「singleChoice」div に「compact」クラスが適用されます。ID がわからない場合 (そして ID を設定する必要がないようにしたい場合)、タグファイル内からこのdivを指定するにはどうすればよいですか?

4

1 に答える 1

1

${question.questionOptions}が 3 未満の場合、「コンパクト」クラスを追加しますか? はいの場合、私が提案する解決策は、div を class="singleChoice compact" で設定する条件を追加することです。

<c:set var="divClass" value="singleChoice" />
<c:if test="${fn:length(question.questionOptions) < 3}">
   <c:set var="divClass">singleChoice compact</c:set>
</c:if>
<div class='${divClass}'>
    <c:forEach items="${question.questionOptions}" var="option">
        <!-- display options... -->
    </c:forEach>
</div>

このソリューションはテストされていませんが、質問を正しく理解していればロジックは存在します。

于 2012-10-16T15:34:05.623 に答える