【发布时间】:2012-12-30 15:13:05
【问题描述】:
在我的 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> - 这是我们需要应用到
stardiv 的内容:// 我需要用下面的$(".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); } }); } });importance值替换score值 - 这是数据
<script> var clientData = [ { id : 1, firstline : "My first line", importance : 2.0 } ]; </script>
如何在生成 star div 时将此插件应用到每个 div?我知道,知道项目的 id 我可以遍历整个 DOM 并将特定的 importance 值设置为特定的 star div,但这意味着多次遍历整个 DOM,这可能会带来问题对于手机/平板电脑,特别是。如果列表变大。有没有办法在生成时将上述内容应用于 div?
【问题讨论】:
-
iterating over the whole DOM a lot of times是错误的。模板 html 不是在 DOM 中创建的,并且在处理完所有数据后,只会在 DOM 中进行一次插入。在插入之前在生成的 html 上调用插件 -
@charlietfl 问题是我不明白怎么做。也就是说,我可以将插件应用于生成的 HTML ($(".star").raty(...)),但我不明白如何为每个 div 设置正确的分值。顺便说一句,$(this).data(..) 甚至 $(this).attr(..) 在那里不起作用。