2013-09-24 4 views
0

나는이 함수가 작동하기는 거의 끝나지 않았지만 아직 그곳에는 없다.단락 요소의 첫 번째 문자를 잘라내어 내용을 바꾸고 클래스를 추가하십시오. jQuery

"+"가 포함 된 p 요소를 찾아 텍스트에서 "+"를 제거하고 기존 내용을 새 내용으로 바꾸고 클래스를 추가합니다.

처음에는 모든 일치 요소가 반환되고 단일 단락으로 연결되었습니다. 그래서 각 함수를 만들려고했습니다. 지금 콘솔에서 올바른 결과를보고 있지만 일치하는 단락의 내용 만 바꾸는 방법을 모르겠습니다 ($ (this 사용)).

나는 바이올린 여기했습니다 아래 http://jsfiddle.net/lharby/x4NRv/

코드 :

// remove bespoke text and add class 
$qmarkText = $('.post p:contains("+")').each(function() { 
    $qStr = $(this).text().slice(1); 
    $qmarkText.replaceWith('<p class="subhead-tumblr"' + $qStr + '</p>'); 
    console.log($qStr); 
}); 

나는, $ qmarkText이 꽤 있지만이 문제를 해결하는 방법을 잘 것을 알고 몇 가지 변화를 시도했다.

누군가 나를 도울 수 있기를 바랍니다.

+0

$ qmarkText에 지정할 필요가 없습니다. $ (this) .text()를 사용하십시오. – andrewb

답변

4

당신은 조각 다음 사용할 수 있습니다

// remove bespoke text and add class 
$qmarkText = $('p').filter(function() { 
    return $(this).text().substring(0, 1) === "+" 
}).each(function() { 
    $qStr = $(this).text().slice(1); 
    $(this).replaceWith('<p class="subhead-tumblr">' + $qStr + '</p>'); 
}); 

DEMO

심지어 문자 '+'시작 부분뿐만 아니라, 콘텐츠 텍스트 안에 일치합니다 :contains()를 사용하여이 피하기를.

+0

을 대체하십시오. 정말 고마워요. 나는 p : contains()가 가장 강력한 방법이 아니라는 것을 알았다. – lharby