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, но только те обнаруженные у

4 ответов


здесь он использует HTML5 :

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, но он просто немного более лаконичен.


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

рабочая демо


Если вы хотите выбрать входы с определенным именем атрибута, и у вас есть эти входы 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='admin']").each(function(){
    alert($(this).val());
});

таким же образом, вы можете зациклить только для пользователей:

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

для итерации по всем элементам с testdata атрибут и назначение полей формы с тем, что их атрибут содержит try

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

[работает со всеми элементами, я думаю]