2011-12-17 3 views
2

나는 4 개 링크교체하는 방법 링크

내가 바꿀 필요
<a href="/search/Assassins%20Creed/" class="eTag">Assassins Creed</a> 
<a href="/search/Dead%20Rising%202/" class="eTag">Dead Rising 2</a> 
<a href="/search/Battlefield/" class="eTag">Battlefield</a> 
<a href="/search/Rising/" class="eTag">Rising</a> 

이 "/ 검색 /"를 "/ searchq =?"

나는이 스크립트를 사용하는 경우 :

$('.eTag').attr('href',$('.eTag').attr('href').replace('/search/','/searchq?=')); 

을 링크는 다음과 같습니다.

<a href="/searchq?=Assassins%20Creed/" class="eTag">Assassins Creed</a> 
<a href="/searchq?=Assassins%20Creed/" class="eTag">Dead Rising 2</a> 
<a href="/searchq?=Assassins%20Creed/" class="eTag">Battlefield</a> 
<a href="/searchq?=Assassins%20Creed/" class="eTag">Rising</a> 

"/ search /" "/ searchq? ="?

+0

방금 ​​해보았습니다. 뭐가 문제 야? –

+1

@PabloFernandez 마지막 코드를 자세히 살펴보십시오. 그것들은 모두 같은 URL입니다. 바꿀 필요가있는 것은'/ search /'~'/ search? q ='이지만 실제 검색 질의는 아닙니다. – Nathan

답변

5

당신은 그들 모두를 반복 할 필요

$('.eTag').each(function() { 
    $(this).attr('href', $(this).attr('href').replace('/search/','/searchq?=')); 
}); 

난 당신의 코드도 실행되었는지 놀라 울뿐입니다.

+0

+1에 대한 +1 "나는 당신의 코드도 실행 놀랐어요." – Nathan

+0

놀랄만한 것은 없습니다. jQuery에서 컬렉션 (예 :'attr')과 같이 "setter-like"메소드를 호출하면 해당 컬렉션의 모든 요소를 ​​__on에서 수행합니다. "getter-like"(다시 한번'attr'이지만 하나의 인자로)를 호출하면 첫 번째 __를 __pick합니다. 그래서 모든 항목에 Assasins Creed (위대한 게임 BTW)가 표시됩니다. –

3

가장 좋은 방법은 .attr()에 함수를 전달하는 것입니다.

$('.eTag').attr('href') 

... 단지 당신에게 발견 된 첫 번째 요소에서 결과를 제공합니다

$('.eTag').attr('href',function(i,href) { 
    return href.replace('/search/','/searchq?='); 
}); 

이유는 이유는 것이 었습니다.

+0

허, 이전에이 구문을 보지 못했습니다. +1 – Blender

0

수행 한 작업은 거의 정확하지만 attr 값이 항상 첫 번째 요소에서 반환되므로 동일한 링크를 가리 킵니다. 같은 그것을 할

$('.eTag').each(function() { 
    $(this).attr('href', $(this).attr('href').replace('/search/','/searchq?=')); 
}); 

바이올린 : http://jsfiddle.net/USzfa/ 그냥 완료, 당신은 또한 일반 자바 스크립트에서 그것을 할 수

0

, jQuery를하지 않고이 조금 아수라장이 될 수도 있지만 33의

var tags = document.getElementsByClassName('eTag'), 
    l = tags.length, 
    i = 0; 

for (i = 0; i < l; i++) { 
    tags[i].innerText = tags[i].innerText.replace('/search/', '/searchq?='); 
} 

this jsperf test run에서 볼 수 있듯이 더 빨라집니다. (참고로 세 번째 해결 방법이 있습니다. 래퍼 <div>을 사용하면 그 정도가 빠르지 만 확실하지는 않은지 확인하십시오.

관련 문제