0

私はhtmlを持っています

<a href="#" data-ext="sql" rel="\dir\file.sql" id="file">file.sql</a>

そして、私はa#fileとりわけこれを見つけたいrelので、

$("#file[rel='\dir\file.sql']")

削除するため、機能しません\(なぜですか?)

var some_var = "/s/s/s/\a\a\a";
// undefined
some_var
// "/s/s/s/aaa"

それで、どのようにアイテム(アイテム)をrelで選択できます\か?

そして、これはすべて働きたいわけではありません

$("#file[rel='\\dir\\file.sql']")
$("#file[rel='/\dir/\file.sql']")  // ^^

http://jsfiddle.net/fUNLV/1/は機能しません:(

4

3 に答える 3

3

バックスラッシュはエスケープ文字です。エスケープ文字をエスケープするには、2 倍にすることができます。

編集 - この場合、エスケープは二重にエスケープする必要があります。

http://jsfiddle.net/FSqZe/

var $el = $('#file[rel="\\\\dir\\\\file.sql"]');
于 2013-11-04T20:48:58.350 に答える
1

1 つだけでなく、両方のスラッシュをエスケープする必要があります。

$("#file[rel='\\\\dir\\\\file.sql']") // that's 4 slashes in each case, 8 total

http://jsfiddle.net/Tentonaxe/fUNLV/2/

これは、まず、この文字列が jQuery に渡され、その時点で次のようになるためです。

"#file[rel='\\dir\\file.sql']"

その後、再び内部的に に渡されるとdocument.querySelectorAll()、CSS セレクター エンジン用にスラッシュが正しくエスケープされます。

http://jsfiddle.net/Tentonaxe/fUNLV/4/

于 2013-11-04T20:57:23.533 に答える
1

これには二重のバックスラッシュを使用する必要があります。

$("#file[rel='\\dir\\file.sql']")

これは、1 つの\スラッシュだけが次の記号をエスケープしようとし、2 つのスラッシュが最初のスラッシュをエスケープするために発生します。

アップデート

あなたが使用する必要があるよう\\\\です:

$("#file[rel='\\\\dir\\\\file.sql']")

jsFiddle デモ

于 2013-11-04T20:49:03.067 に答える