4

選択したdivにアクティブクラスを追加するための次のコードがあります。

$("div #"+ myID).addClass( "active" );

これは、myIDが1ワードの場合にのみ機能し、myIDにスペースが含まれていると、コードが壊れ、myIDを引用符でラップしようとしましたが機能しません。

多くのコンテンツにはスペース付きのdividがあります。私はコンテンツの所有者ではないため、コンテンツを修正するためのコントロールがありません。コンテンツを操作するようにコードを変更することしかできません。スペースでdividを指す方法はありますか?ありがとうございました。

問題が解決しました。皆さん、ありがとうございました :-)

4

2 に答える 2

8

要素IDにはスペースを入れないでください。

IDトークンとNAMEトークンは、文字([A-Za-z])で始まる必要があり、その後に任意の数の文字、数字([0-9])、ハイフン( "-")、アンダースコア( "_")を続けることができます。 、コロン( ":")、およびピリオド( "。")。

HTML仕様から。


要素IDを制御できない場合は\\、セレクターでスペースをエスケープします。

<div id="target element"></div>

$('#target\\ element').doSomething(); // escape invalid chars with \\

あなたの場合、myIDのスペースを次のように置き換える必要があります'\\ '

于 2012-04-19T16:44:22.713 に答える
1
$("div #"+ myID).addClass( "active" );

上記のコードは無効な

HTML5グローバルid属性です:

id属性はid、HTML要素の一意を指定します(値はHTMLドキュメント内で一意である必要があります)。
id属性は、スタイルシート内のスタイルを指すために最もよく使用され、JavaScriptによって(HTML DOMを介して)特定の要素を操作するために使用されますid

  • AZまたはazの文字で始まる必要があります
  • 続いて、文字(A-Za-z)、数字(0-9)、ハイフン( "-")、およびアンダースコア( "_")を続けることができます。
  • HTMLでは、すべての値で大文字と小文字が区別されません。
  • 少なくとも1文字を含める必要があり(空にすることはできません)、スペース文字を含めることはできません。

例:以下のHTML5では、IDが有効です。

<p id="#">Foo.</p>
<p id="##">Bar.</p>
<p id="♥">Baz.</p>
<p id="©">Inga.</p>
<p id="{}">Lorem.</p>
<p id="“‘’”">Ipsum.</p>
<p id="⌘⌥">Dolor.</p>
<p id="{}">Sit.</p>
<p id="[attr=value]">Amet.</p>
<p id="++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.">Hello world!</p>

jQueryの場合: jQueryは有効なID名を処理します。メタ文字(ドット、セミコロン、角かっこなど)をエスケープする必要があります。(引用符に問題があるjava-scriptのように)。

jQueryでidを使用する場合、以下の制限があります。

// Does not work
 $("#some:id")

 // Works!
 $("#some\\:id")

 // Does not work
 $("#some.id")

 // Works!
 $("#some\\.id")

こちらのリファレンスを参照してください

于 2012-04-19T17:40:04.587 に答える