jQuery 1.6, изменил свое поведение .val ()? - PullRequest
2 голосов
/ 06 мая 2011

В jQuery 1.6 мне кажется, что функция .val() была изменена начиная с jQuery 1.5.2.

Когда я вызываю ее для выбора, чтобы получить значение, теперь я получаю текст,Например:

<option value="1">john</option>

Когда я звоню:

$('select').val();

с jQuery 1.5.2, я получаю 1 , тогда как с jQuery 1.6 я получаю Джон

Я знаю, что они изменили поведение .attr() и ввели .prop(), но на эта ссылка Я не могу найти ничего о .val().

Здесь - это пример, показывающий эту разницу и то, что я до сих пор пытался получить значение опции.Переключитесь с jQuery 1.6 на jQuery 1.5.2, чтобы увидеть.

Как мне получить значение опции с jQuery 1.6?

Ответы [ 2 ]

8 голосов
/ 06 мая 2011

Ваша ошибка в вашем примере с jsfiddle заключается в использовании val до создания значения, для этого вам лучше использовать attr('value', id).Тогда val() все еще работает, как и ожидалось, так же, как и в предыдущих версиях, и вы можете получить значение option с ним.

http://jsfiddle.net/KFDWm/5/

4 голосов
/ 14 мая 2011

В v1.6 была ошибка, в которой val('asdf') больше не устанавливает значение: http://bugs.jquery.com/ticket/9071 Эта ошибка была исправлена ​​в v1.6.1.

Кроме того, несмотря на то, что говорили другие, вполне нормально использовать val () для установки значения - на самом деле, согласно команде jQuery, это предпочтительнее, чем attr('value', 'asdf').

...