通过jquery获得json编码数据属性的正确CSS语法
我需要在data people中获取一个json编码的数据:通过jquery获得json编码数据属性的正确CSS语法,jquery,css,Jquery,Css,我需要在data people中获取一个json编码的数据: <ul> <li data-test="one" data-people='{"name" : "Paul", "color" : "black"}'>Paul</li> <li data-test="two" data-people='{"name" : "John", "color" : "blond"}'>John</li> <li data-test
<ul>
<li data-test="one" data-people='{"name" : "Paul", "color" : "black"}'>Paul</li>
<li data-test="two" data-people='{"name" : "John", "color" : "blond"}'>John</li>
<li data-test="three" data-people='{"name" : "Jane", "color" : "black"}'>Jane</li>
</ul>
现在,我想向ul li展示具有金黄色的数据人员(忽略仅存在于上述示例中的数据测试)
我在下面进行了测试,但效果不理想:
$('ul li[data-people="{"color": "blond"}"]').show();
我的意思不是获取颜色值,比如:$('ulli').data('people').color
,而是在对象内部执行正确的CSS语法
任何暗示都将不胜感激。谢谢。除了使用
*=
(“属性包含”)选择器外,您不能仅使用选择器以任何干净的方式执行此操作。只有当JSON正好包含这个子字符串时,这个函数才会起作用-删除:
之前的空格,它就会停止工作
$('ul li[data-people*=\'"color" : "blond"\']').show();
您可能真正想要的是.filter()
:
通过这种方式,您可以使用(快速)CSS选择器引擎仅获取相关元素(那些具有
数据人物属性的元素),然后使用回调函数过滤结果集。除了使用*=
(“属性包含”)选择器之外,您无法以任何干净的方式使用选择器来完成此操作。只有当JSON正好包含这个子字符串时,这个函数才会起作用-删除:
之前的空格,它就会停止工作
$('ul li[data-people*=\'"color" : "blond"\']').show();
您可能真正想要的是.filter()
:
通过这种方式,您可以使用(快速)CSS选择器引擎仅获取相关元素(那些具有数据人物属性的元素),然后使用回调函数过滤结果集。Hmmm,听起来很合理。这是确定的吗?所以我可以把你的作为答复。感谢注意这不是CSS语法,这些是jQuery选择器语法,问题用;)我说的是标题;)实际上,第一个例子也只使用CSS:嗯,听起来很合理。这是确定的吗?所以我可以把你的作为答复。感谢注意这不是CSS语法,这些是jQuery选择器语法,问题用;)我说的是标题;)实际上,第一个示例也仅适用于CSS:
$('ul li[data-people]').filter(function() {
return $(this).data('people').color == 'blond';
}).show();