0

我正在尝试过滤掉下划线模板中的元素。例如,我只想返回没有类名“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>
<% }); %>
4

1 回答 1

0

如果您想从生成的 HTML 中提取<div>没有类的 s 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')
//...

如果您只想pin在来自模板的 HTML 中包含非 s,那么:

<% _.each(items, function(item, i) { %>
    <% if(item.id != 'feature') { %>
        <div class="item <%= item.id %>" style="width: <%= item.width %>px">
            <!--...-->
        </div>
    </div>
<% }); %>

或者也许使用_.chainand _.filter

<% _(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}));

然后你会想使用 jQueryfilter而不是find

var not_pins = tmpl.filter(':not(.pin)');

或者,再次,给定模板的特定结构:

var not_pins = tmpl.filter('.item');
于 2012-09-14T19:18:50.083 回答