通过jquery获得json编码数据属性的正确CSS语法

通过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

我需要在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="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();