私のWebアプリでは、コンテンツが異なる(つまり、テキストと評価が異なり、ボタンIDが異なる)同じブロック(テキスト、評価、ボタン)をいくつか作成する必要があります。そのために、私はjQueryテンプレートを使用しています。
同時に、評価には「Raty」jQueryプラグインを使用します。塗りつぶされた星と空の星の数として評価が表示され、テンプレートにデータが入力されたときに値を渡す必要があります。
ただし、テンプレート処理の時点で、対応するdivにプラグインを適用する方法が見つかりません。
これがコードです。
- テンプレート
//アラートは必要なデータにアクセスできることを確認するためだけにあります<script id="clientTemplate" type="text/html"> <span class="firstline" id="firstline_${id}">${firstline} <div class="star" id="s_${id}" style="cursor: pointer; width: 100px;"></div> {{if unescape( alert($data.importance) )}}{{/if}} </span> </script>
star
これは、 div に適用する必要があるものです。//値を下 の値 に置き換える必要があります$(".star").raty({ half : true, score : 2.5, readOnly : false, click : function(score, evt) { if (readonly) { return false; } _id = $(this).attr("id"); _id = id.replace("s", ""); _id = _id.trim(); $.ajax({ url : "importancereceive.html", type : "POST", data : { id : _id, importance : score }, success : function(data) { if (data != "1") { alert("Failed to mark plan as completed"); } }, error : function(jqXHR, textStatus, errorThrown) { alert("error: " + textStatus); alert("error: " + errorThronwn); } }); } });
score
importance
- そしてここにデータがあります
<script> var clientData = [ { id : 1, firstline : "My first line", importance : 2.0 } ]; </script>
生成中にこのプラグインを各divに適用するにはどうすればよいstar
ですか?アイテムのIDを知っていると、DOM全体を反復処理し、特定のimportance
値を特定のstar
divに設定できることを理解していますが、それはDOM全体を何度も反復処理することを意味し、電話/タブレット、特に問題を引き起こす可能性があります。 。リストが大きくなった場合。生成されているdivに上記のものを適用する方法はありますか?