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

<div>生成されたHTMLからのクラスなしで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に非を含めるだけの場合は、次のようにします。

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

または、おそらく使用_.chainして_.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}));

filter次に、次の代わりにjQueryを使用しますfind

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

または、テンプレートの特定の構造を考えると、次のようになります。

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