我知道如何循环下面的输入,搜索具有特定类别的“测试者”
这就是我这样做:
<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>
它按预期输出“约翰”,“史密斯”.
我不想使用class =“testing”并使用自定义属性:testdata =“John”.
所以这就是我要做的:
<input type='text' name='firstname' testdata='John'> <input type='text' name='lastname' testdata='Smith'>
我的目标是使用testdata内部的任何内容自动填充每个输入的值,但只有那些被检测到具有testdata属性的值.
这是我尝试使用$.each循环的失败:
$.each($('input').attr('testdata'),function() { var testdata = $(this).attr('testdata'); $(this).val(testdata); });
我得到这个响应:未捕获TypeError:无法读取未定义的属性’length’
任何人都可以看到我在做错什么?
解决方法
这里使用的是HTML5 data- *属性:
HTML:
<input type='text' name='firstname' data-test='John'> <input type='text' name='lastname' data-test='Smith'>
JS:
$("input[data-test]").each(function(){ var testdata = $(this).data('test'); $(this).val(testdata); });
这里工作:http://jsfiddle.net/SFVYw/
一个更短的方法是使用这个JS:
$("input[data-test]").val(function(){ return $(this).data('test'); });
在内部它的做法和其他的JS代码一样,但只是稍微简明一些.