在jQuery 1.9 .attr(..)
方法不再返回的属性值,而不是我们现在必须使用.prop(..)
。不幸的是这也适用于通过属性选择器指定即$("input[value=]")
属性见 http://jquery.com/upgrade-guide/1.9/#attr-versus-prop-
和上.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)
方法更清洁的方法?
感谢
看起来很干净,我 - 而且可能比以前的更好的解决方案(如以前的解决办法只能从值集工作时,DOM被初始化,并且你当前的解决方案考虑是否有用户输入) – ahren 2013-03-20 00:48:44
不应该是'[value]'而不是'[value =]'?或者两者都工作? – 2013-03-20 00:48:46
对我来说工作得很好 - > [** FIDDLE **](http://jsfiddle.net/ssPku/),它应该是'[value =“”]',只要'[value]'会选择任何具有值属性的元素。 – adeneo 2013-03-20 00:54:14