2011-08-31 4 views
0

블로그의 댓글에 대한 답장 시스템을 만들려고합니다. 누군가가 "답장"을 클릭하면 주석 ID를 취하여 주석 텍스트 상자에 두 개의 괄호를 넣습니다.jQuery를 사용하여 텍스트를 링크로 만들려면 어떻게해야합니까?

기본적으로이 모양은 >> 123456789입니다. 링크가 아니거나 일반 텍스트 일뿐입니다. 이 브라켓은 >로 변환 게시 된 일단 그래서 최종 소스 코드에서 다음과 같이합니다 : >>123456789 (모든 ID가 9 개 숫자가 있습니다)

내가 링크로 텍스트를 확인해야합니다.

여기 일이 해야하는 내용은 다음과 같습니다 http://jsfiddle.net/KFXFd/
여기에 클래스 변경하려고 할 때 발생하는 내용은 다음과 같습니다 클래스가 .commenttext 대신 이어야한다는 것을 는 http://jsfiddle.net/qWYCQ/

주 만에 나는 그것을 작동시킬 수없는 몇 가지 이유 (나는 js에서 끔찍하다).

+0

_ "클래스는'body' 대신'.commentheader'가되어야합니다"_ 왜? 그리고'.commenttext'라는 뜻입니까? –

답변

1

각 루프마다 this을 사용하여 현재 요소를 참조해야합니다. 실제로 .commentheader 클래스를 갖는 모든 요소가 포함 된 Fiddle 데모에서 thePage을 사용하고 있습니다. 이 시도.

여기 demo

(function($) { 
    var thePage = $(".commenttext"); 
    thePage.each(function() { 
     $(this).html($(this).html().replace(/(>)(>)[0-9]{9}/ig, 
       function(matched) { 
        return "<a href=\"#" + matched.replace(/(&gt;)/g,"") + "\">" + matched + "</a>";})); 
    }); 
})(jQuery) 
+0

고마워, 당신과 토마스 버전 모두 완벽하게 작동합니다. – Ex1

+0

@ Ex1 - 답변으로 표시 할 수 있습니까? – ShankarSangoli

0

작업하고있다 자바 스크립트 :

$(document).ready(function(){ 
    var thePage = $(".commenttext"); 

    thePage.each(function() { 
     $(this).html($(this).html().replace(/&gt;&gt;([0-9]{9})/, "<a href=\"#$1\">$1</a>")); 
    }); 
}); 

이 코드에 여러 가지 문제가 있습니다.

처음에는 jquery의 each()에서 $(this)을 사용해야합니다.이 때 다루는 acctual 요소를 참조하십시오.

두 번째로 귀하의 replace()을 변경했습니다. 정규식의 내용을 둘러싸고있는 ()$1 (또는 $2 등 ... $ 1은 첫 번째 $ 2이고 세 번째 일치는 3 번째 등)를 사용하여 다음 인수에서 참조 할 수있는 일치 항목을 가져옵니다.

희망적입니다.

관련 문제