Меняем свойства элементов в JQuery 1.6+

С переходом на новую версию JQuery (1.6.2), я обнаружил что не могу менять свойства таких элементов как option, input:checkbox и др.

Раньше для того, чтобы сделать выбранным option можно было просто добавить к нему атрибут selected:

[codesyntax lang=»javascript» title=»JQuery: option selected»]

$('option').attr('selected', 'selected');
//или
$('option').attr('selected', true);

[/codesyntax]

Для того, чтобы убрать выделение:

[codesyntax lang=»javascript» title=»JQuery: option selected»]

$('option').remove('selected');
//или
$('option').attr('selected', false);

[/codesyntax]

Тоже самое касалось input:checkbox и его атрибута checked:

[codesyntax lang=»javascript» title=»JQuery: checkbox checked»]

$('input:checkbox').attr('checked', 'checked');
//или
$('input:checkbox').attr('checked', true);
// и удаление
$('input:checkbox').removeAttr('checked');
//или
$('input:checkbox').attr('checked', false);

[/codesyntax]

Теперь же все эти манипуляции ни к чему не приводят. Оказывается в новой версии JQuery свойства элементов отделены от их атрибутов. Для доступа к атрибутам остался метод .attr(), а для доступа к свойствам элемента, которые могут меняться динамически (значения атрибутов при этом не меняются), теперь нужно пользоваться .prop().

Следовательно наш пример будет выглядеть так:

[codesyntax lang=»javascript» title=»JQuery: prop()»]

$('input:checkbox').prop('checked', true);
$('input:checkbox').prop('checked', false);
$('option').prop('selected', true);
$('option').prop('selected', false);

[/codesyntax]

 

Запись опубликована в рубрике JavaScript/JQuery с метками , , , , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *