0

この HTML を考えると:

<p htmlfor="afield">This field is required.</p>

この jQuery セレクターは p タグを見つけます。

var filtered = $("*").filter("[for='afield']");

これはしませんが:

$("p").filter("[for='afield']");

なぜ最初のものは一致するのですか?HTML の属性は「htmlfor」で、セレクターの属性は「for」です。

そして、なぜ 2 つ目は一致しないのでしょうか。

ここにフィドルがあります(アラート付き、申し訳ありません...)。

http://jsfiddle.net/f7v4h/1/

コメントから、私が気にかけている理由を説明する編集:

jquery-validate プラグインを使用しています。[for='afield']はプラグイン コードが使用する構文であり、HTML を生成するプラグインでもあります。自分のサイトのバグを修正できるように、何が起こっているのかを理解しようとしています。

4

1 に答える 1

1

jQuery validate を 1.9.0 にアップグレードして、問題が解決するかどうかを確認してください。Microsoft の CDN からライブ リンクできます: http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js

編集:

jQuery と jQuery.validate をアップグレードすると、「動作していません」は解決されましたが、「理由」は解決されなかったようです。「なぜ」に答えようとする:

http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-213157251は、これらのプロパティが例外であることを示唆しているように思われるため、厄介な方法で名前が変更されています。おそらくこれは、迷惑なブラウザーの異常を jQuery が抽象化して、仕事をやり遂げることができるもう 1 つの良い例です。

于 2012-05-22T00:25:43.410 に答える