2009-10-28 4 views
0

우리는 가져와 다른 사람의 페이지에 표시 할 HTML 컨텐트를 제공합니다. 페이지의 소유자는 콘텐츠 BLOB 주위에 제목을 붙이지 만 제목은 사용자에게 표시하기 쉬운 사용자 친숙한 이름이 아닌 콘텐츠를 제공하는 웹 서비스의 이름입니다. 끝날 때 제목을 변경하는 방법을 알 수 없으며 웹 서비스의 이름을 변경하고 싶지 않으며 며칠 만에 데모가 필요합니다.JQuery를 사용하여 HTML 페이지의 특정 문자열 바꾸기

이상적인 솔루션은 포털 도구를 사용하여 제목을 사용자 정의하는 방법을 파악하는 것이지만 데모 전에는 발생하지 않을 것입니다. 그래서 우리가 보내주는 콘텐츠에 자바 스크립트를 포함시킬 수 있다고 생각했습니다. 제목을 변경하게됩니다. 이것은 그들에게 그들이하는 일을 알아낼 시간을 벌 것입니다.

자신의 제목에 대한 코드는 다음과 같습니다

<div class="titleClass"> Bad Title </div> 

나는 "좋은 제목"과 "나쁜 제목을"대체하고 싶습니다. 이 텍스트를 페이지에서 jQuery 선택기를 사용하여 찾으려면 불행히도 title 클래스의 클래스가있는 여러 div 항목이 있고 그 중 하나만 변경하고 싶습니다 .... 사용할 수있는 선택기가 있습니다. div 태그 안에 "Bad Title"텍스트가 있는지 확인하십시오. 또는 페이지의 다른 모든 제목을 반복하는 별도의 함수를 작성하고 각각에 "잘못된 제목"이 포함되어 있는지 테스트해야합니까? 두 번째 작업을 수행해야한다면 누구나 공유 할 샘플 코드가 있습니까? 일치하는 요소의 텍스트 교체 후

var $matches = $('div.titleClass').filter(function() { 
    return $(this).text() == 'Bad Title'; 
}); 

과 : 일치하는 텍스트가있는 모든 요소의 컬렉션을 얻을

답변

1

아마도 간단할까요?

$(document).ready(function() { 
    $('div.titleClass:contains("Bad Title")').text("Good title"); 
}); 

선택자는 contains입니다.

+0

불행히도 정확한 일치는하지 않습니다. – karim79

4

먼저

$matches.each(function() { 
    $(this).text('New Title'); 
}); 

을 위 정확히 텍스트 을 가진 요소를 찾습니다 'Bad Title'과 (과) 일치합니다. 이 포함 된 요소를 'Bad Title'텍스트 (예 : 당신이 : indexOf 또는 search, 예컨대을 사용해야한다 '나쁜 제목'

return $(this).text().indexOf('Bad Title') > -1; 

마지막으로주의해야 할 점은 대소 문자 구분입니다. 대소 문자를 구분하지 않고 일치 시키려면 다음과 같이 제안하십시오.

// the div contains Bad Title of whatever case 
return $(this).text().search(/Bad Title/i) > -1; 

// the div exactly matches Bad Title of whatever case 
return $(this).text().search(/Bad Title/i) > == 0; 
+1

죄송합니다. 더 튼튼하게 편집하기 – jitter

+0

@ 지터 - 그는 'Bad Title'을 포함 할 것인지 'Bad Title'을 포함 할 것인가에 따라 달라집니다. 나는 후자를 추측했다. – karim79

+0

두 옵션을 모두 갖게되어 기쁩니다. 감사! –

관련 문제