背景
从 jQuery 1.9 开始,该.attr(..)
方法不再返回属性值,而是我们现在必须使用.prop(..)
. 不幸的是,这也适用于通过属性选择器指定的属性,即$("input[value=]")
见 http://jquery.com/upgrade-guide/1.9/#attr-versus-prop-
.attr
以及关于和之间差异的良好讨论.prop
:
我的情况
我目前正在使用选择器,例如$("input[value=]")
and$("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)
and方法更清洁的.filter(hasNoValue)
方法?
谢谢