2010-06-16 7 views
2

는 HTML입니까?jQuery를 업데이트 링크

<a href="http://site.com/any/different/folders/user_picture_name.jpg">Go and win</a> 
<a href="http://site.com/not/similar/links/user_some_other_name.png">Go and win</a> 

여기 user_가 추가됩니다

스크립트 같은 것을 제공해야합니다.

각 링크는 링크의 길이가있을 수 있습니다 var img_link

입니다.

+0

예, 링크가 아닌 정규 표현식 버전을 원한다면 우리는 아래로 마지막 "/" – Happy

+0

그게 전부 다를 수 있습니다 . ; o) – Happy

+0

스크롤 비트를 검색하는 이유 – user113716

답변

2

니스와 청소를 위해 가지 말았어야했다 가졌어요. 스플릿, 배열 없음, 정규 표현식 없음. : O) 여기

테스트를 :http://jsfiddle.net/Pjdtm/

var index = img_link.lastIndexOf('/') + 1; 

     // "result" now stores the new href. 
    var result = img_link.substr(0,index) + 'user_' + img_link.substr(index); 
+0

+1 그 멋진 도구 더 효율적인 구현 방법이라고 생각합니다. jQuery 선택을'$ ('a [href]')'로 변경하여 이상한 가장자리 케이스를 없앨 수 있습니다. – Senseful

+0

@eagle - jsFiddle ? 그래, 굉장해. : o) – user113716

+0

@eagle - 편집을 보지 못했습니다. 그래, 선택자는 꽤 일반적이다. 이것이 더 효율적인지 (3 함수 호출) 확실하지 않지만 정규 표현식보다 조금 더 예쁘다. 당신의 대답 아래 Happy의 마지막 코멘트로, 나는 우리가 올바른 길을 가고 있는지 확신 할 수 없다. – user113716

3

그래서 최상의 솔루션은 스플 라이스를 사용하고 가입한다고 생각합니다.

예 jQuery를이 용액은 이와 같은 단순한 문자열 처리에서 우수 regular expressions 사용

$("a").each(function(){ 
var arr = $(this).attr("href").split("/") 
arr[arr.length-1] = "_user" + arr[arr.length-1]; 
$(this).attr("href",arr.join("/")); 
}); 
+0

가능하지만, 순수한 정규식 방법이 * 많이 * 빠르며 더 짧습니다.이 코드는 이해하기 쉽습니다. – MvanGeest

+0

나는 간단한 정규 표현식 솔루션을 더 쉽게 이해할 수있다. – Senseful

+0

href가 이미 "var img_link"에 있습니다. – Happy

7

: OP의 요청 img_link를 사용 업데이트

$('a[href]').each(function() { 
    var img_link = $(this).attr('href'); 
    $(this).attr('href', img_link.replace(/([^\/]+)$/, "user_$1")); 
}); 

. 이미 img_link 변수와 자신의 each() 루프가있는 경우

, 단순히 기능 내부의 한 줄, 즉 :

$(this).attr('href', img_link.replace(/([^\/]+)$/, "user_$1")); 
+0

확실한 내 대답보다 더 좋은 대답 – Shawn

+0

+1 거의 비슷한 것을 작성하기 거의 완료했습니다. – MvanGeest

+0

href가 이미 "var img_link"에 있습니다. 코드를 추가 할 수 있습니까? – Happy

1

여기 하나의 방법을 사용합니다. href 속성에서 다음 정규식을 사용

(http://.+/(?=.+"))(.+) 

이 별도로 http://site.com/not/similar/links/folders/user_picture_name.jpg 일치합니다. 그런 다음 두 개의 일치 항목을 가운데에 추가 된 텍스트와 결합 할 수 있습니다.

1

당신은 당신이 다음과 같이 hrefText을 수정할 수 있습니다 var hrefText = jQuery('a').attr('href'); 기준에 대한 특성 얻을 수 있습니다 :

hrefText = hrefText.substr(0,hrefText.lastIndexOf('/'))+'user_'+hrefText.substr(hrefText.lastIndexOf('/')),hrefText.length); //do this in each statement 을 한 후 다시 속성을 설정합니다.

jQuery('a').attr(hrefText);

은 링크 수있는 경우에 당신은 자바 스크립트 접근

관련 문제