19

IDのあるdivがあります

<div id="updates-pane-user.followed_on">

このjqueryセレクターは機能します

$("[id^='updates-pane']")

しかし、これはしません

$("#updates-pane-user.followed_on")

何が悪いのかわかりません。ID名にピリオドを含めることができますか?明らかな何かが欠けていますか?

4

9 に答える 9

33

後者のセレクターで.は、クラスを示すために使用されます。そのため、クラスを探して.followed_onいますが、明らかに見つからないため、一致するものはありません。

これを修正するには、ダブルバックスラッシュでドットをエスケープする必要があると思います。

$("#updates-pane-user\\.followed_on")

jQueryのドキュメントによると:

メタ文字(! "#$%&'()* +、。/ :; <=>?@ [] ^` {|}〜など)を名前のリテラル部分として使用するには、 2つの円記号でエスケープする必要があります:\\。たとえば、id = "foo.bar"の要素は、セレクター$( "#foo \\。bar")を使用できます。

一般に、IDにピリオドやその他の特殊文字を使用しないようにして、混乱を避けてください。「許可」は「グッドプラクティス」と同じではありません。

于 2013-02-07T14:26:44.183 に答える
4

idjQuery構文でクラスセレクターを表す属性のドットのため。このセレクターは、ノードを次のように選択するのと同じです。

<div id="updates-pane-user" class="followed_on">

于 2013-02-07T14:28:19.907 に答える
4

はい、HTML5ではidにピリオドを使用できますが、jQueryはw3組織によって構築されていません。これは、最も一般的なケース向けに最適化されたユーティリティライブラリです。

IDにピリオドがある場合、またはjQueryがそれを単なるID以上のものとして解析する他の文字がある場合は、標準関数を使用することをお勧めします。

$(document.getElementById(yourId))

これは、IDが変数からのものである場合に推奨されるソリューションです。

于 2013-02-07T14:30:04.453 に答える
4

$("#updates-pane-user\\.followed_on")-これはJqueryのドキュメントに従って機能するはずです

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

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

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

 // Works!
 $("#some\\.id")
于 2013-02-07T14:31:27.400 に答える
2

.セレクターは次の名前のクラスがあると見なすため

$("#updates-pane-user.followed_on")

updates-pane-user意味:クラス名を持つid=のすべての要素を検索するfollowed_on

于 2013-02-07T14:27:45.010 に答える
2

これを使用してドットをエスケープします。

$("#updates-pane-user\\.followed_on")

参照:http ://docs.jquery.com/Frequently_Asked_Questions#How_do_I_select_an_element_by_an_ID_that_has_characters_used_in_CSS_notation.3F

于 2013-02-07T14:29:57.200 に答える
2

確かに、JQueryがパターンを認識するための問題を作成する期間。

jQueryには3つのタイプのセレクターがあります。

  1. "."セレクターとは、クラス名で要素を選択することを意味します。
  2. "#"セレクターとは、IDで要素を選択することを意味します。
  3. そして、名前(など)divで要素を選択する要素セレクターinput

jQuery engineそして、IDの命名規則と混同しています。

id="updates-pane-user"とが適用されたdivがあると仮定しclass="followed_on"ます。このような場合jQueryは、を使用してシーケンスをエスケープすることをお勧めし//ます。以下は、要素を選択するためのシンテックスです。

$("#updates-pane-user\\.followed_on");

この間違ったフィドルをチェックして、次を使用して修正してみてください:http //: //jsfiddle.net/ukJ8Z/

乾杯!!

于 2013-02-07T14:36:50.743 に答える
1

はいJimboの答えは正しいですが、エスケープ文字を使用してそれを機能させることができます\\

$("#updates-pane-user\\.followed_on")

2つの円記号でエスケープします。

このリンクを確認してくださいHow do I select an element by an ID that has characters used in CSS notation?

于 2013-02-07T14:29:25.053 に答える
0

次のように、id属性セレクターを使用することもできます。

$('[id="updates-pane-user.followed_on"]')

jQueryは属性をjQueryクラスセレクターではなく文字列として扱うためです。

于 2015-10-09T10:03:32.753 に答える