バックグラウンド
jQuery 1.9 以降、この.attr(..)
メソッドはプロパティ値を返さなくなり、代わりに を使用する必要があります.prop(..)
。残念ながら、これは属性セレクターを介して指定された属性にも適用されます。$("input[value=]")
http://jquery.com/upgrade-guide/1.9/#attr-versus-prop-を参照してください 。
.attr
との違いに関する適切な SO ディスカッション.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!=]")
に相当するものはありますか? そうでない場合、 andメソッド$("[value='abc']")
を使用するよりもクリーンな方法はありますか?.filter(hasValue)
.filter(hasNoValue)
ありがとう