Свойство типа jQuery 1.6 не определено
Я не могу получить свойство типа в jQuery 1.6
<div id="div_id">
<input type="text" value="foo" />
<input type="text" value="foo" />
<input type="text" value="foo" />
<input type="text" value="foo" />
<input type="checkbox" checked="checked" />
</div>
и JQuery
$.each('#div_id input',function(index,value){
var input_type = $(this).prop('type')
alert(input_type);
/*
switch(input_type) {
case 'checkbox':
$(this).prop('checked',false);
break;
//more cases here
default:
this.value = '';
}*/
});
увидеть мою скрипку
4 ответа
Это потому, что вы неправильно поняли $.each()
функция, которая принимает массив или объект (в отличие от селектора). Когда вы передаете строку $.each()
jQuery выполняет итерацию по всем символам в строке (в большинстве браузеров).
Чтобы решить эту проблему, вы можете передать селектор в jQuery и использовать результат в $.each()
, или позвоните по телефону .each()
по результату:
$('#div_id input').each(function(index,value){
var input_type = $(this).prop('type');
/* ... */
});
Смотрите вашу обновленную скрипку.
Если вы чувствуете себя смелым, вы можете оставить jQuery внутри функции и получить доступ к свойству напрямую, что повысит эффективность и сократит код:
var input_type = this.type;
Хотя Энди Э прав насчет $.each
, имеет смысл использовать attr() для type
, как prop()
следует использовать только для атрибутов логического типа:
$('#div_id input').each(function() {
var input_type = $(this).attr('type');
alert(input_type);
/*
switch(input_type) {
case 'checkbox':
$(this).prop('checked',false);
break;
//more cases here
default:
this.value = '';
}*/
});
Тип это атрибут, а не свойство, смотрите здесь:
Вы должны использовать следующее, чтобы получить значения атрибутов
$(Это).attr("тип");