2009-05-22 10 views
2

ピリオド(。)で区切られた要素がありますが、選択する必要がありますが、エスケープ文字が必要です。どのように私の文字列がピリオドを持つかもしれないことが確実にエスケープされることを確かめることができます。このような何か私は推測する?要素を選択できるように任意の(。)ピリオドをエスケープバックスラッシュに置き換えます。

var title = "User1.Title"; 
var string = //replace any periods with escape sequence? 
$('#'+string).show(); 

それはないうまくいけば、複数のピリオド(。)を有することができるが、私は私の選択を行うことができますので、私はすべてのピリオド(。)を置き換えることができれば素晴らしいことだという。

答えて

6

これは意味ですか?

$('#'+string.replace(/\./g, "\\.")).show(); 
+0

'string.replace("。 "、" \\。 ")'は、文字列の最初のピリオドのみを置き換えます。それらをすべて置き換えるには、 's.replace(/\./ g、" \\。 ")'を使用します。次に、 "User1.Title.Subtitle"のようなものも動作します。 –

+0

@TimBartschありがとう、ありがとう。 – Gumbo

1

これは動作します:

$("[id='"+string+"']").show() 

プロパティとしてあなたはそれを指定した場合、それをエスケープする必要はありません - jqueryのは違っそれを解析します。

+0

あなたは、@duckyflipに近づいていましたが、idであるということだけではありません。 jqueryはプロパティの文字列を異なる方法で解析します。あなたは文字列の周りの引用符を忘れました。 – Will

3

あなたがこれを行うことができます...

$("[id="+string+"]").show(); 

...しかし、この男との問題は、それは、そのIDを持つすべての男を探しているDOMツリー全体ではなく横断しますので、それはそれ速くないです唯一。

また、jQueryのはそのセレクタを事前に解析し、舞台裏のdocument.getElementByIdを使用することを... ...

$('#'+string.replace(".", "\\.")).show(); 

これを行うことができます。

また、この

$(document.getElementById(string)).show(); 

...ウィッヒは、同じ効果をyelds、あなたがCSSの特殊文字を心配する必要はありません行うことができます。 IE(6と7)とOperaは、そのIDだけでなくその名前によって要素を選択するように注意してください。

+0

ここで私にとって最初の解決策が見つかった。 jQueryを使用してCSSプロパティを調整するとき、エスケープと置換の組み合わせが機能しませんでした。 – Prinsig