2012-12-20 13 views
5

Chcę, aby tytuł mojej strony był wyświetlany w unikalnej czcionce z reszty treści za każdym razem, gdy pojawi się w nagłówku, ze względu na branding. Dla uproszczenia, udawajmy, że moją specjalną czcionką jest Courier, a moja firma nazywa się SparklePony. Tak, jak linia,Zmiana stylu wszystkich wystąpień ciągu znaków

<h1 class="title">SparklePony Board of Directors</h1> 

pokaże nagłówek ze słowem SparklePony w Kurierze i Zarządu w mojej domyślnej witryny czcionką Arial. (Tak, wiem, że to byłoby ohydne.)

Próbowałem użyć wymiany ciągów jQuery, ale nie chcę zastąpić ciąg, chcę go zobaczyć w Courier (dodając klasy do tego samego słowa lub czegoś podobnego.) Zastąpienie SparklePony z spowodowało, że cały paskudny ciąg z tagami i wszystkim do wyświetlenia na mojej stronie, zamiast dodawać klasy.

Czy robię coś nie tak z zamiennikiem ciągu znaków, czy też istnieje lepszy sposób na stylizowanie wszystkich wystąpień ciągu znaków?

+3

Jaki jest kod używany do wymiany? Czy zastąpiłeś innerHTML? – user1884047

Odpowiedz

6

Można zrobić to w ten sposób - określając selektor chcesz - # ('h1') lub klasy .

$('.title').html(function(i,v){  
    return v.replace(/SparklePony/g,'<span class="sparkle">SparklePony</span>'); 
}); 
​ 

http://jsfiddle.net/cQjsu/

1

spróbować czegoś takiego:

$.each($(".title"),function({ 
$(this).html($(this).html().replace("SparklePony","<span class='sparkle-pony'>SparklePony</span>")) 
}); 
2

Bez zobaczenia kodu (co byłoby dosyć ważne pytania, takie jak to), najlepiej Domyślam się, że używasz .text() zamiast .html() co analizować HTML poprawnie .

+0

Jest to pomocne. Rewizja. – beth

2

Może to przydać się podczas sprzątania, ale może to być dobry punkt wyjścia: http://jsfiddle.net/c24w/Fznh4/9/.

HTML

<div id="title">Highlight this blah blah HiGhLiGhT THIS blah</div> 
<button id="clickme">Click to highlight text</button> 

CSS

#title{ 
    font-family: sans-serif; 
    font-size: 20pt; 
    margin: 30px 0; 
} 
span.highlight{ 
    color: #09f; 
    font-weight: bold; 
} 

JavaScript

function highlightText(element, phrase, allOccurrences, caseSensitive){ 
    var modifiers = (allOccurrences ? 'g' : '') + (caseSensitive ? '' : 'i'); 
    var text = element.innerHTML; 
    element.innerHTML = text.replace(new RegExp(phrase, modifiers), function(match){ 
    return '<span class="highlight">' + match + '</span>'; 
    }); 
} 

var button = document.getElementById('clickme'); 
var el = document.getElementById('title'); 

button.onclick = function(){ 
    highlightText(el, 'highlight this', true, false); 
    button.onclick = null; 
}; 
1

Nicea i krótki:

var $body = $("body"); 
$body.html($body.html().replace(/SparklePony/ig, "<span class='cool'>SparklePony</span>"));​ 

Należy jednak pamiętać, że $("body") jest bardzo kosztowne selektor. Powinieneś rozważyć bardziej precyzyjny cel nadrzędny.

Demo here (fiddle)

+0

Na razie ograniczam to do h1. Punkt wzięty. – beth

Powiązane problemy