2011-06-13 4 views
5

현재 일부 위치 정보가있는 URL을 추가하는 데 사용하는이 jQuery 비트가 있습니다.jQuery에서 쿼리 문자열의 존재에 대한 href 확인

jQuery('a').attr('href', function() { 
      return this.href + "&location=/123/abc"; 
     }); 

대부분의 링크에는? 위의 사용을 위해 만든 것입니다. & ok. 일부는 선택하지 않습니다. 나는 URL이 있는지 확인하기 위해 찾고 있어요?. "& location =/123/abc"를 사용하려면? "? location =/123/abc"을 사용해야 할 것입니다.

if/else 문과 함께 나는 최선이 아닙니다. 어떤 도움을 주시면 감사하겠습니다.

if (thereIsA?InTheUrl) { 

    return this.href + "&location=/123/abc"; 

} else { 

    return this.href + "?location=/123/abc"; 

} 

그런 것 같은데, 쓰지 않을 수도 있습니다.

답변

6
jQuery('a').attr('href', function() { 
     return (this.href.indexOf("?") >= 0) ? this.href + "&location=/123/abc" : this.href + "?location=/123/abc"; 
    }); 
+0

이것은 완벽하게 작동했습니다! – Michael

1

마이클.

JavaScript의 indexOf() 함수를 사용하십시오. 이처럼

: 일치하는 문자열의

반환 위치 그것을 발견하면 :

작동 원리
if(this.href.indexOf('?')>=0){//PLACE MAGIC HERE} 

이있다.
찾지 못하면 -1을 반환하므로 >=0입니다. 위치 0은 문자열의 첫 번째 문자입니다. 여기

세부 사항 :
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/indexOf

+1

이 작동합니다. 위에서 언급 한 답변과 동일하지만 세부 사항은 적습니다. 나는 다른 사람들이 학습 과정을 이해할 수 있도록 위의 대답을 선택했다. 감사합니다. – Michael

0
if (this.href.indexOf("?") >= 0) 
+0

이것은 작동합니다. 위에서 언급 한 답변과 동일하지만 세부 사항은 적습니다. 나는 다른 사람들이 학습 과정을 이해할 수 있도록 위의 대답을 선택했다. 감사합니다. – Michael

1
var str = window.location.href; 
if (str.indexOf('?' >= 0) { 
    return str + "&location=/123/abc"; //there's a ? 
} else { 
    return str + "?location=/123/abc"; //no ? 
}