2

私はjQueryの初心者です。[name=value] セレクターの使用時に問題が発生しました。HTMLは次のとおりです。

<input type="number"/>

とても簡単ですよね?そして、ここにJSがあります:

$("input").val(100);
$("input[value='100']").val(200)​

結果は次のとおりです。スクリプトの最初の行は機能しますが、2 行目は機能しません。(Chrome、FF、IE9) IE8 では両方の行が機能します。これはどのように起こりますか?ところで、私はjQuery1.7.2を使用しています。または、 http://jsfiddle.net/wzKNV/で上記のコードをテストすることもできます。

4

2 に答える 2

6

attribute-equalsセレクターはattributeをチェックしますが.val()、プロパティのみを変更するため、セレクターは更新を認識しません。

jQuery/Sizzle のデフォルトのネイティブquerySelectorAllメソッドは、この「属性のみ」の動作を強制します。

querySelectorAllSizzle を使用する必要があるようにのセレクターを壊すと、動作します...

// v------made it a non-standard Sizzle selector
$(":input[value='100']").val(200);

これは、Sizzle セレクターが必ずしもセレクターに準拠しているとは限らないためqSAです。もちろん、これによりセレクターの意味が少し変わりますが、説明には役立ちます。

デモ: http://jsfiddle.net/wzKNV/3/


標準セレクター(これは良い考えです)を使用してそれを維持するには、代わりに使用できますfilter()...

$("input").filter(function() { return this.value === '100'; })
          .val(200);

デモ: http://jsfiddle.net/wzKNV/4/

于 2012-04-16T03:12:34.060 に答える
0

もしも

<input type="nubmer" disabled="disabled" value="100" />​ // your fiddle have no `value`

それから

$("input[value='100']").val(200)​​​​​​​

動作します

于 2012-04-16T03:18:52.927 に答える