jQuery.val (...) не меняет DOM? - PullRequest
4 голосов
/ 26 января 2012

Я просто начну с представления кода, который ведет себя не так, как должен.Поскольку он очень прост, он должен говорить сам за себя.

HTML:

<input id="bla"></input>
<input id="blub"></input>

JavaScript:

jQuery('#bla').attr({'value': 'a'});
jQuery('input[value="a"]').val('s');

jQuery('#blub').val('d');
jQuery('input[value="d"]').val('f');

jsFiddle: http://jsfiddle.net/5dww7/

Проблема: jQuery('input[value="d"]') не определена

Это ошибка?Firebug на самом деле говорит, что «значение» существует - так что, может быть, проблема с селектором?

Ответы [ 2 ]

5 голосов
/ 26 января 2012

Метод jQuery .val() изменяет свойство значения, а не атрибут значения.Атрибут равен селектору, выбираемому по атрибуту, а не по свойству (что делается движком css браузера в современных браузерах).

4 голосов
/ 26 января 2012

Когда вы используете val, вы меняете свойство value .Когда вы используете attr, вы изменяете атрибут .

Поскольку вы затем используете селектор атрибута для выбора элемента, он будет работать, только если атрибут присутствует.

Если вам нужно выбрать элементы на основе значения их свойства value, вы можете использовать filter:

$("input").filter(function() {
    return this.value === "whatever"; //Accesses the value property
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...