2012-05-14 3 views
0

그래, 나에게 무슨 문제가 있는지는 잘 모르겠지만 여러 URL 중 일부를 찾아 교체하려고합니다.JS 또는 jQuery를 사용하여 URL의 일부를 대체하십시오.

기본적으로 내 사이트에 동적으로 추가되는 일부 URL이 있습니다. 모두 'newsLink'라는 클래스가 있는데 링크 중 일부는 google.docs 뷰어를 가져오고이를 제거해야합니다. 여기

는 지금까지 내 코드입니다 :

링크의 모습
$('a.newsLink').each(function(){ 
var lnk = $('a.newsLink').attr(); 
var re = new RegExp("http://docs.google.com/viewer?url=","g"); 
lnk.replace(re, ""); 
}); 

:

<a href='http://myHomePage.pdf' class='newsLink' target='_blank'> 
: 링크처럼 보이도록 내가 첫 번째 부분을 제거하고 싶은

<a href='http://docs.google.com/viewer?url=myHomePage.pdf' class='newsLink' target='_blank'> 

어쨌든, 행운이 멀리 ... 아무도 도와주세요.

답변

2

먼저 루프의 모든 링크를 다시 가져옵니다. 그런 다음 속성을 얻으려고 시도하지만 어떤 속성을 말하지 않았습니다. 마지막으로 반환 값을 지정하지 않고 replace을 사용하려고합니다.

이것은 코드가 있어야한다 무엇 :

$('a.newsLink').each(function(){ 
    var lnk = this.href; 
    this.href = lnk.replace("http://docs.google.com/viewer?url=", ""); 
}); 

참고 : 나는 믿고있어 당신은 링크가 들어되고 싶어 myHomePage.pdf, 프로토콜 없음.

+0

귀하의 [작동하지 않습니다] (http://jsfiddle.net/bneLJ/). –

+0

당신 말이 맞아요, 나는 정규식을 테스트하지 않았고, 다른 문제에 집중했습니다 ... – bfavaretto

+0

좋아요, 나는 그저 정규식을 버렸습니다. [이제는 작동합니다] (http://jsfiddle.net/bneLJ/1/). – bfavaretto

1

원하는 정규 표현식입니다.

http:\/\/docs\.google\.com\/viewer\?url=(.+) 

먼저 정규 표현식을 모두 이스케이프 처리합니다. 이 경우 \, .?입니다. 모든 문자 ((.+))와 일치하는 그룹을 사용하여 문서를 캡처하고 있습니다.

그래서 지금까지 코드는 이렇게 보입니다.

$('a.newsLink').each(function(){ 
    var lnk = this.href; 
    var re = /http:\/\/docs\.google\.com\/viewer\?url=(.+)/g 
    this.href = lnk.replace(re, ""); 
}); 

이제 우리는 그렇게 그룹을 얻습니다.

var match = re.exec(lnk); 

일치하는 배열을 반환합니다. Google의 문서는 match[1]에 저장됩니다. 그래서 우리의 최종 코드가 나옵니다.

$('a.newsLink').each(function(){ 
    var lnk = this.href; 
    var re = /http:\/\/docs\.google\.com\/viewer\?url=(.+)/g 
    this.href = (re.exec(lnk))[1]; 
}); 
관련 문제