2

なぜ私がこれを行っているのかを詳しく説明せずに...(そもそもエンコードする必要がありますが、私の制御の及ばない理由ではありません)

このようなHTMLが少しあるとします

<tr data-path="files/kissjake's files"">...</tr>したがって、実際のデータパスはfiles/kissjake's files"

<tr>データパスでそれを選択するにはどうすればよいですか?

私が現在できる最善のことは、変数を JS に取り込んで操作を行うときです。URL エンコードして、常にエンコードされたバージョンで作業できるようにします。jQueryはデータパスを適切に決定するのに十分賢いように見えるので、私はそれについて心配していません.

問題は、別の場所のデータ パスから読み取り、それらを比較する必要があるコードの 1 つのステップにあります。

実際にこれを選択すること<tr>は、私を混乱させるものです。

ここに私のコーヒースクリプトがあります

oldPriority = $("tr[data-path='#{path}']").attr('data-priority')

パスの URLEncoded バージョンを補間すると、TR が見つかりません。そして、パスに複数の「」と「」が競合しているため、jQueryが壊れるため、URLDecodeできません。

<tr>そもそもhtmlでエンコードされていなくても、特定のデータ属性に一致するものを選択する方法が必要です

4

2 に答える 2

0

@Nathan Wall の回答から構築すると、属性を<tr>持つすべてのタグが選択されます。data-path

$("tr[data-path]");
于 2012-12-05T04:38:04.610 に答える
0

まず、"そこに余分なものを入れるつもりでしたか?これは有効な HTML ではないため、エスケープする必要があります。

<tr data-path="files/kissjake's files&quot;">...</tr>

それを選択するには、セレクター内でエスケープする必要があります。これがどのように見えるかの例を次に示します。

$("tr[data-path='files/kissjake\\'s files\"']")

説明:

\\''CSS セレクター内をエスケープするために使用されます。は他の一重引用符で囲まれているため'、CSS レベルでエスケープする必要があります。2 つのスラッシュ '\` がある理由は、スラッシュをエスケープして、セレクター文字列にする必要があるためです。

より簡単な例:'John\\'s'文字列 を生成しますJohn\'s

\"他の二重引用符の中に含まれている二重引用符をエスケープするために使用されます。これは (CSS レベルではなく) JS レベルでエスケープされているため、実際に文字列コンテンツ内にスラッシュを入れる必要がないため、1 つのスラッシュのみが使用されます。

より簡単な例:'Hello \"World\"'文字列 を生成しますHello "World"


アップデート

HTML の出力方法を制御できず、無効な HTML を処理する運命にあるため、余分な二重引用符は無視する必要があります。したがって、代わりに次のことができます。

$("tr[data-path='files/kissjake\\'s files']")

\\'一重引用符を扱う部分だけです。余分な二重引用符は、ブラウザーの寛大な HTML パーサーによって処理される必要があります。

于 2012-12-05T04:34:26.503 に答える