2009-05-22 6 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 and 7)와 Opera가 신분에 의해서뿐만 아니라 그 이름에 의해서 요소를 선택하도록 조심하십시오.

+0

첫 번째 해결책은 나를 위해 일한 것으로 나타났습니다. jQuery를 사용하여 CSS 속성을 조정할 때 탈출구와 대체물의 조합이 작동하지 않았습니다. – Prinsig

관련 문제