2009-11-30 7 views
-1

정규 표현식에 익숙해 져 있고 JavaScript 변수 사용법이 확실하지 않습니다.자바 스크립트 정규 표현식에서 자바 스크립트 변수 사용하기

내 코드는 다음과 같습니다

if (window.location.hostname == 'localhost') { 
    var $sURLDomain = 'http://localhost/'; 
} 
else { 
    var $sURLDomain = 'http://mysite.com'; 
} 


$('#content a[href^=$sURLDomain]').addClass('internal'); 

은 기본적으로 내가 내 로컬 또는 라이브 URL에있어 여부에 따라 변수 $sURLDomain를 설정하고있다.

나는 다음 내 링크가 $sURLDomain 변수로 시작 여부를 테스트하고 만 특정 링크에 클래스를 추가 할 jQuery를 사용하고 싶습니다.

이 있으므로이를 달성하는 방법이 확실하지 오전, 작동하지 않는 것.

+3

키보드를 청소하십시오 :은'.'이 붙어있는 것 같다. –

+0

lol @ Bart for sarcasm. – mauris

+0

oi! 타이핑 할 때 등등 ............ – namtax

답변

1

이 시도 :

$('#content a[href^="'+$sURLDomain+'"]').addClass('internal'); 

또는를 :

$('#content a').filter(function() { 
    return this.href && this.href.substr(0, $sURLDomain.length) != $sURLDomain; 
}).addClass('internal'); 
+0

필터를 렌더링 할 때 JS 엔진에 대한 추가 작업 소리가납니다. – mauris

+0

@thephpdeveloper :'filter' 메소드가 필요한 경우'$ sURLDomain'의 값에 의존합니다. 하지만 렌더링이란 무엇을 의미합니까? JavaScript 엔진은이 코드 내에서 아무 것도 렌더링하지 않습니다. – Gumbo

+0

첫 번째는 당신이 sURLDomain 시작 해달라고 링크를 식별 얼마나 궁금 ... me..thanks을 위해 좋은 일을 – namtax

1
$('#content a[href^=$sURLDomain]').addClass('internal'); 
  1. 자바 스크립트 PHP 스타일의 문자열 보간을하지 않습니다. '#content a[href^='+sURLDomain+']'라고해야합니다.

  2. 그것은 $와 자바 스크립트 변수를 시작하는 특이한입니다. 어떤 사람들은 변수를 jQuery 또는 다른 라이브러리의 래퍼 객체라는 '헝가리 표기법'스타일의 플래그로 사용합니다. 이것이 좋은 아이디어인지는 논쟁의 여지가 있지만 $ 변수를 접두어로 사용하지 마십시오.

  3. [^=...] 선택기 리터럴 문자열 속성 값의 시작을 확인한다. 질문 제목과는 반대로 여기에는 정규식이 없습니다. 정규식에 대한 유일한 연결은 '문자열 시작'을 의미하는 ^의 사용입니다.

  4. ] 또는 \과 같이 URL의 선택기에 특수한 문자가있는 경우 이스케이프가없는 것은 선택기 표현식이 중단된다는 것을 의미합니다. 아마 가능성이 특정한 경우에, 그러나 잘 간단 말을 (쉽게이 도메인 이름을 변경 주어진 배포 할) 수 있습니다 :

    for (var i= document.links; i-->0;) 
        if (document.links[i].hostname===location.hostname) 
         $(document.links[i]).addClass('internal');