微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

这就是我这样做:

<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代码一样,但只是稍微简明一些.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐