Фон
Как и в 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)?
Спасибо