2013-12-04 6 views
3

В моем файле JSON у меня есть 7 объектов, где первые 3 из них имеют "is_read" attribute == 1, и последние 4 имеют "is_read" == 0. добавить строки, используя шаблон и хочет дать тр различных классов в зависимости от их "is_read" значения (".news_read" для "is_read" == 1 и ".news_unread" для "is_read" == 0).Как добавить разные классы в элемент шаблона?

Однако в итоге у меня 7 строк, у всех есть класс «news_unread». Хотя, console.log показывает, что у меня есть 3 "newsData.get('is_read') == 1" и 4 "newsData.get('is_read') == 0" объектов.

Мне интересно, как создавать строки с разными классами. Я попытался сделать newsRow.addClass, но в сообщении об ошибке говорится, что объект <tr><td>...</td></tr> (шаблон newsRow) не может иметь метод addClass.

render: function() { 
    news.fetchMyNews(); 
    for (var i = 1; i <= news.length; i++) { 
     var newsData = news.get(i); 
     var newsRow = JST["news/row"](newsData.attributes); 
     $("#news_tbody").append(newsRow).first('tr').attr("class",function(){ 
      if (newsData.get('is_read') == 1) 
       return "news_read"; 
      else if (newsData.get('is_read') == 0) 
       return "news_unread"; 
     }); 
    }   
} 
+0

Можете ли вы создать jsfiddle? – Pinal

ответ

0

Вы писали:

Я пытался сделать newsRow.addClass, но сообщение об ошибке говорит, что объект ... (шаблон newsRow) не может иметь метод addClass.

Но я не могу найти addClass в вашем примере кода:

$("#news_tbody").append(newsRow).first('tr').attr("class",function(){ 
    if (newsData.get('is_read') == 1) 
     return "news_read"; 
    else if (newsData.get('is_read') == 0) 
     return "news_unread"; 
}); 

я просто советую вам попробовать этот код (используйте addClass, вместо attr и добавлять блоки, если заявление):

$("#news_tbody").append(newsRow).first('tr').addClass(function(){ 
    if (newsData.get('is_read') === 1){ 
     return "news_read"; 
    } else if (newsData.get('is_read') === 0) { 
     return "news_unread"; 
    } 
}); 
+0

Теперь у меня есть оба класса: «news_read» и «news_unread». –

0

Как предложил @Pinal, вместо этого я использовал addClass.

Однако после append(newsRow) я использовал .children('tr'), и он отлично работал.

$("#news_tbody").append(newsRow).children('tr').addClass(function(){ 
    if (newsData.get('is_read') === 1){ 
    return "news_read"; 
    } else if (newsData.get('is_read') === 0) { 
    return "news_unread"; 
    } 
}); 
Смежные вопросы