Фон
Как и в jQuery 1.9, метод .attr(..)
больше не возвращает значения свойств, вместо этого мы теперь должны использовать .prop(..)
. К сожалению, это также относится к атрибутам, указанным с помощью селектора атрибутов i.e. $("input[value=]")
См http://jquery.com/upgrade-guide/1.9/#attr-versus-prop-
и хорошее обсуждение SO о различиях между .attr
и .prop
:
Моя ситуация
В настоящее время я использую селектора типа $("input[value=]")
и $("select[value=]")
для выбора входных элементов, которые не имеют значения. Однако это больше не работает с jQuery 1.9, вместо этого я теперь делаю что-то вроде этого:
var hasValue = function () { return !!($(this).val().length); };
var hasNoValue = function () { return !($(this).val().length); };
$("input").filter(hasValue);
$("select").filter(hasValue);
Мои фактические селекторы немного больше, проверяя несколько элементов с или без значений, поэтому теперь мне нужно разделить 1 селекторную строку на несколько селекторов с помощью метода .filter(..) между вызовами.
Вопрос
Есть ли эквивалент $("[value=]")
, $("[value!=]")
, $("[value='abc']")
, который использует свойство вместо атрибута? А если нет, есть ли более чистый способ, чем использование методов .filter(hasValue)
и .filter(hasNoValue)
?
Спасибо