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'))
})