2012-10-03 6 views
1

jquery를 배우기 시작했는데 제대로하고 있는지 알고 싶었습니다. 여기 내 코드입니다Jquery PathName Regex Changing Background

var images = ['1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg','6.jpg', '7.jpg', '8.jpg', '9.jpg']; 
if (window.location == 'http://localhost:81/ci/login') { 
    $('body').css('background-image', 'url("public/images/login_4.jpg")'); 
} else if(window.location == 'http://localhost:81/ci/index.php/login') { 
    $('body').css('background-image', 'url("../public/images/login_4.jpg")'); 
}else { 
    $('body').css({'background-image': 'url(public/images/' + images[Math.floor(Math.random() * images.length)] + ')'}); 
} 

첫 번째 블록은 위치가 주어진 문자열과 같은 경우 검사입니다 무엇을 그와 함께 문제는 URL은 http://localhost:81/ci/login? 또는 http://localhost:81/ci/login#

처럼 보이는 경우 코드가 실패 ... 내가 거기에 대한 정규식 솔루션을 알고. 친구들을 어떻게 생각하니?

답변

2

당신은, 당신은 단지 더 휴대용 코드에 대한이로 결합, 더 나은 아직 indexOf()

if(window.location.href.indexOf('http://localhost:81/ci/login') != -1) 
{....} 
else if(window.location.href.indexOf('http://localhost:81/ci/index.php/login' != -1) 
{....} 

또는 사용할 수 있습니다 이것에 대한 어떤 정규식 필요가 없습니다

if(window.location.href.indexOf('login') != -1) 
+0

감사합니다. 어떤 것이 더 좋은지 궁금하다. –

+0

이 코드를 다른 도메인 (localhost가 아닌)에 이식하려면, 자바 스크립트를 그대로 복사 할 수 있으므로 두 번째 버전을 사용하는 것이 현명하다. – gcochard

+1

당신이 준 2 번째 코드를 처음 시도한 것은 작동하지 않습니다. 나는 검색을했고'toString' 메서드를'indexOf'보다 먼저 추가했습니다. –

1

정규식 비효율적이며, 이와 같은 간단한 경우에는 피해야합니다.

대신을 시도해보십시오

if (window.location.href.indexOf('http://localhost:81/ci/login') == 0) { 
    ... 
} ... 

당신이 (학습을 시작 확실히 편리한 도구) 정규식을 사용하여 주장하는 경우과 같이 같은 일을 수행 할 수 있습니다

if (/^http:\/\/localhost:81\/ci\/login/.test(window.location.href)) { 
    ... 
} ... 

캐럿을^기호는 일치되는 문자열의 시작을 표시합니다. 패턴이 문자열의 중간에 나타난 경우에도이 테스트는 true가됩니다. 슬래시는 정규식의 시작과 끝을 표시하므로 패턴의 모든 슬래시는 이스케이프 처리해야합니다.

+0

감사합니다! 고맙습니다. 당신의 충고를 고려할 것입니다. 감사합니다! –