Свойство типа 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 = '';
    }*/
});

Тип это атрибут, а не свойство, смотрите здесь:

http://blog.jquery.com/2011/05/12/jquery-1-6-1-released/

Вы должны использовать следующее, чтобы получить значения атрибутов

$(Это).attr("тип");

Другие вопросы по тегам