Например, будет работать:
$('li[data-total="0"]').addClass('new_messages');
Если вы просто хотите добавить стиль CSS, вам не нужен класс, но вы можете просто использовать селектор атрибутов CSS: [ 119]
li[data-total="0"] {
background : red;
}
$('li[data-total="0"]')
.addClass('new_messages')
.parents('li')
.addClass('new_messages');
.new_messages {
background : rgba(255,0,0,.2);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
<li data-total="0">Node 1</li>
<li data-total="4">Node 2</li>
<li data-total="1">Node 3
<ul>
<li data-total="1">sub node 1</li>
<li data-total="2">sub node 2
<ul>
<li data-total="0">test node 1</li>
<li data-total="2">test node 2</li>
<li data-total="7">test node 3</li>
</ul>
</li>
</ul>
</li>
<li data-total="0">Node 4</li>
</ul>
Ну, Вы могли, возможно, добавить a ShouldSerializeFoo()
метод:
using System;
using System.ComponentModel;
using System.Xml.Serialization;
[Serializable]
public class MyEntity
{
public string Key { get; set; }
public string[] Items { get; set; }
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
public bool ShouldSerializeItems()
{
return Items != null && Items.Length > 0;
}
}
static class Program
{
static void Main()
{
MyEntity obj = new MyEntity { Key = "abc", Items = new string[0] };
XmlSerializer ser = new XmlSerializer(typeof(MyEntity));
ser.Serialize(Console.Out, obj);
}
}
ShouldSerialize{name}
башмак распознан, и метод называют, чтобы видеть, включать ли свойство в сериализацию. Существует также альтернатива {name}Specified
шаблон, который позволяет Вам также обнаруживать вещи при десериализации (через метод set):
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
[XmlIgnore]
public bool ItemsSpecified
{
get { return Items != null && Items.Length > 0; }
set { } // could set the default array here if we want
}