jQuery-通过具有特定属性的元素循环

jQuery-通过具有特定属性的元素循环,jquery,custom-attributes,each,Jquery,Custom Attributes,Each,我知道如何通过下面的输入循环,搜索具有特定类别“测试员”的输入 我是这样做的: <input type='text' name='firstname' class="testing" value='John'> <input type='text' name='lastname' class="testing" value='Smith'> <script type="text/javascript"> $(document).ready(function(

我知道如何通过下面的输入循环,搜索具有特定类别“测试员”的输入

我是这样做的:

<input type='text' name='firstname' class="testing" value='John'>
<input type='text' name='lastname' class="testing" value='Smith'>

<script type="text/javascript">
$(document).ready(function(){

 $.each($('.testing'), function() { 
   console.log($(this).val());
 });

});
</script>
我的目标是用
testdata
中的任何内容自动填充每个输入的值,但只填充检测到具有
testdata
属性的值

这是我尝试使用
$的失败尝试。每个
循环:

$.each($('input').attr('testdata'), function() {
  var testdata = $(this).attr('testdata');
  $(this).val(testdata);    
});
我得到以下响应:
uncaughttypeerror:无法读取未定义的属性“length”
有人能看出我做错了什么吗

$("input[testdata]").each(function(){
  alert($(this).attr('testdata'));
 // do your stuff
});

这里使用的是HTML5
数据-*
属性:

HTML:

这就是它的工作原理:

更简短的方法是使用以下JS:

$("input[data-test]").val(function(){
    return $(this).data('test');
});

在内部,它与其他JS代码的作用相同,但更简洁。

如果要选择具有特定属性名称的输入,并且有以下html输入:

<input type='text' name='user1' fieldname="user" class="testing" value='John1'>
<input type='text' name='user2' fieldname="user" class="testing" value='Smith1'>
<input type='text' name='admin1' fieldname="admin" class="testing" value='John2'>
<input type='text' name='admin2' fieldname="admin" class="testing" value='Smith2'>
同样,您只能为用户循环:

$("input[fieldname='user']").each(function(){
    alert($(this).val());
});

要使用
testdata
属性迭代所有元素,并使用其属性所包含的内容分配表单字段,请尝试

$("[testdata]").each(function(){
    $(this).val($(this).attr('testdata'))
})

[适用于所有元素]

旁注:使用
数据-*
属性,而不是您自己编造的属性。这是常见做法吗?如果是这样,很高兴知道。你推荐的任何地方我都能读到?当然可以。你可以读到它或@ahren谢谢!我当然更喜欢遵循standardsA快速添加:此代码将只搜索具有必需数据属性的输入。我需要以输入和选择为目标。将第一行更改为“$”(“[数据测试]”)。每个(函数(){”将对此进行排序。。。
<input type='text' name='user1' fieldname="user" class="testing" value='John1'>
<input type='text' name='user2' fieldname="user" class="testing" value='Smith1'>
<input type='text' name='admin1' fieldname="admin" class="testing" value='John2'>
<input type='text' name='admin2' fieldname="admin" class="testing" value='Smith2'>
$("input[fieldname='admin']").each(function(){
    alert($(this).val());
});
$("input[fieldname='user']").each(function(){
    alert($(this).val());
});
$("[testdata]").each(function(){
    $(this).val($(this).attr('testdata'))
})