我正在尝试过滤掉Underscore模板中的元素。例如,我只想返回没有类名“pin”的元素。任何人都知道如何使用下划线方法或jquery
来做到这一点var renderToHTML = function( data ) {
var list = data.results[0].items;
var tmpl = $( template({items : list}) );
// var layout = tmpl.filter()
}
我的模板代码如下所示。
<% _.each(items,function(item,i){ %>
<% var cls=( item.id == 'feature') ? "pin" : 'item'; %>
<div class="<%=cls%> <%=item.id%>" style="width:<%=item.width%>px">
<div class="itemInner">
<img src="<%= item.img %>" />
<div class="title"><%= item.title %></div>
</div>
</div>
<% }); %>
答案 0 :(得分:0)
如果您想从生成的HTML中提取<div>
一类pin
,那么您可能想要使用:not
:
$(':not(.pin)')
$('some_prefix_for_specificity :not(.pin)')
$some_root_element.find(':not(.pin)')
//...
或者,考虑到模板中的逻辑,您可以改为寻找.item
:
$('.item')
$('some_prefix_for_specificity .item')
$some_root_element.find('.item')
//...
如果您只想在模板中出现的HTML中包含非pin
,那么:
<% _.each(items, function(item, i) { %>
<% if(item.id != 'feature') { %>
<div class="item <%= item.id %>" style="width: <%= item.width %>px">
<!--...-->
</div>
</div>
<% }); %>
<% _(items).chain().filter(function(item) { return item.id != 'feature' }).each(function(item, i) { %>
<div class="item <%= item.id %>" style="width: <%= item.width %>px">
<!-- ... -->
</div>
<% }); %>
如果您想在此级别执行此操作:
var tmpl = $(template({items : list}));
var not_pins = tmpl.filter(':not(.pin)');
或者,再次,给出模板的具体结构:
var not_pins = tmpl.filter('.item');