2

私が使うとき

alert(j(this).attr("id"));

ポップアップウィンドウが表示されるのがわかります_denominations[3].id.denominationId

しかし、私が電話するとき

alert(j('#_denominations[3].id.denominationId').attr("id"));

ポップアップ ウィンドウに表示されます'undefined'。実際の html DOM は次のようになります。

<div class="form-field">
    <select id="_denominations[3].id.denominationId" class="removableDenom" name="denominations[3].id.denominationId">
</div>

undefinedでは、ポップアップが発生する可能性があるのはどのような可能性があるか

4

5 に答える 5

4

ID値自体のピリオドと角かっこをエスケープしてみてください。だからあなたの価値:

'#_denominations[3].id.denominationId'

になる

'#_denominations\\[3\\]\\.id\\.denominationId'

jQueryがこれらをクラスや属性セレクターと混同している可能性があります。

例: http: //jsfiddle.net/jonathansampson/ZUMna/

于 2013-03-23T17:50:56.377 に答える
3

jqueryは属性セレクターおよびクラスセレクターとして使用するため[、ID内の特殊文字をエスケープする必要があり]ます。.[].

これを試して

alert(j('#_denominations\\[3\\]\\.id\\.denominationId').attr("id"));
于 2013-03-23T17:51:26.783 に答える
1

jQueryは、それら[]がIDの一部ではなく、属性セレクターであると想定しています。特殊文字はエスケープする必要があります。HTML5より前のHTMLIDでは[] 実際には許可されていません。これにより、今後他の問題が発生する可能性があります。古いブラウザでは、IDが数字で始まっているため、たとえばHTML5 doctypeでも、document.getElementByIdが失敗するのを見てきました。 。

于 2013-03-23T17:51:59.193 に答える
1

別のショートカット。

j('[id="_denominations[3].id.denominationId"]')
于 2013-03-23T18:02:58.523 に答える
0

idandname属性を単純化することを強くお勧めします。

以下は HTML4 ドキュメントからのもので、HTML のバージョンによって異なる場合があります:
http://www.w3.org/TR/html4/types.html#type-id

ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").

個人的には、英数字、ハイフン、アンダースコアのみを使用しています。私はそれらを短く意味のあるものにしようとしています。これにより、私だけでなく、私のコードを扱う可能性のある他の開発者にとっても簡単になります。

于 2013-03-23T18:04:35.183 に答える