Javascript 在数据属性中按对象值查找元素

Javascript 在数据属性中按对象值查找元素,javascript,jquery,html,Javascript,Jquery,Html,我有以下情况。 具有输入,该输入在数据属性中具有对象: <input type='text' data-testname='{"repeat" : "{"group_id" : "1"}"}' value='value 1' /> <input type='text' data-testname='{"repeat" : "{"group_id" : "1"}"}' value='value 2' /> <input type='text' data-testnam

我有以下情况。 具有输入,该输入在数据属性中具有对象:

<input type='text' data-testname='{"repeat" : "{"group_id" : "1"}"}' value='value 1' />
<input type='text' data-testname='{"repeat" : "{"group_id" : "1"}"}' value='value 2' />
<input type='text' data-testname='{"repeat" : "{"group_id" : "1"}"}' value='value 3' />

是否有任何不带循环的选择器来查找文档中的所有元素,而不添加新的数据属性(data-group_id='1'),其中:

testname>repeat>group_id=1


是的,我知道的另一个属性是解决方案,但仍然。。。。。有这样的路吗

是的,您可以使用属性值选择器

input[data-testname='{"repeat" : "{"group_id" : "1"}"}']
input[data testname='{“repeat”:“{”group_id:“1”}']{
颜色:绿色;
字体大小:粗体;
}

jQuery使用
css
选择器。对于
数据
属性的
json
编码数据没有选择器。但是,您可以尝试这样的方法

$('input[data-testname=\'{"repeat" : "{"group_id" : "1"}"}"\']').
我建议您使用以下代码以获得更清晰的代码:

query = $('input').filter(function() {
  var json = JSON.parse($(this).data('testname'));
  return json.repeat.group_id == 1;
});

// Do whatever you want with 'query' jQuery object.

尝试使用
filter()


var el=$('[data testname]')。过滤器(函数(){
var data=$(this.attr('data-testname');
if(JSON.parse(data.repeat.group_id==1)
归还这个;
});
console.log(el[0])

为什么不简单地创建一个名为group_id的属性呢?这并不是您问题的答案,但是否可以添加另一个
数据-
属性,如
数据组id=“1”
?是的,我知道的另一个属性是解决方案,但仍然。。。。。有这样的方法吗?最好使用
try…catch
包装
JSON.parse()
。感谢您的帮助,css的解决方案非常完美:)“madalin ivascu”-方法更适合我。谢谢。
<input type='text' data-testname='{"repeat" : {"group_id" : 1}}' value='value 1' /><input type='text' data-testname='{"repeat" : {"group_id" : 1}}' value='value 1' />
 var el =  $('[data-testname]').filter(function() {
  var data = $(this).attr('data-testname');
       if(JSON.parse(data).repeat.group_id  == 1)
             return this;
    });
console.log(el[0])