在我的webapp中,我需要創建一些具有不同內容的相同塊(某些文本,評級,某些按鈕)(即文本和評分不同,按鈕ID是不同的)。爲此,我使用jQuery模板。jQuery模板,將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>
我怎樣才能將這個插件應用於star
div的每個生成?據我所知,知道我可以迭代整個DOM的項目ID並將具體的importance
值設置爲特定的star
div,但這意味着需要多次遍歷整個DOM,這可能會給手機/平板電腦帶來問題尤其是,如果列表變大。有沒有辦法將這件事情應用到div中?
'迭代整個DOM很多次'是錯誤的。模板html不是在DOM中創建的,並且一旦處理完所有數據,DOM中只會創建一個插入。在生成的html插入之前調用插件 – charlietfl
@charlietfl問題是我不明白。也就是說,我可以將插件應用到生成的HTML($(「.star」)。raty(...)),但我不明白如何爲每個div設置正確的分數值。順便說一句,$(this).data(..)甚至$(this).attr(..)在那裏不起作用。 – Ibolit