2013-05-27 26 views
0

我試圖定位下一個'。'在使用jQuery的標題。針對下一個字符的jquery

所以現在的標題是

<h1 class="page-head">Explore. Think. Connect.</h1> 

和我的jQuery是

$(h1.page-head:contains(.)').each(function(){ 
    $(this).html(
    $(this).html().replace('.','<span class=\'nice-point\'>&#46;</span>') 
); 
}); 

我想知道如何定位的其他2 ''分別添加樣式給他們。

任何幫助將不勝感激!

+0

用html中的跨度分隔3個單詞不是更容易,還是不可能? –

+0

你可以打破這三個詞,並輕鬆遍歷並替換它。我認爲這會容易得多。 – RL89

+0

@AndrewNgo它的一個WordPress的頁面標題,所以沒有 – Mark

回答

0

如果您想對出現的每個事件應用特定的樣式,您可以按照文本中出現的點的順序排列希望應用的樣式。

like。

$("h1.page-head:contains(.)").each(function(){ 

    newHTML = $(this).html() 
    .replace('.','<span style=\'color:#F00;\'>&#46;</span>') 
    .replace('.','<span style=\'color:#40F;\'>&#46;</span>') 
    .replace('.','<span style=\'color:#0F4;\'>&#46;</span>')  

    $(this).html(newHTML); 


}); 

這裏是一個demo fiddle

上面的例子分別適用style=\'color:#F00;\'至第一點,style=\'color:#40F;\'至第二點,style=\'color:#0F4;\'到第三點。我認爲這是你的意思,分別添加樣式到每個點。對不起,如果我錯了。

+0

啊 - 做到了! - 謝謝! – Mark

2

這樣的事情,使用the overload of .html() which accepts a function:

$('h1.page-head:contains(.)').html(function (index, oldHtml) { 
    return oldHtml.replace(/\./g, '<span class="nice-point">&#46;</span>'); 
}); 

如果你想要做的事對於每個.不同的oldHtml,你可以更大膽的嘗試,since replace() accepts a function as well,或者你可以使用任何其它所需的字符串操作:

$('h1.page-head:contains(.)').html(function (index, oldHtml) { 
    // equivalent to the code above; just an example 
    return oldHtml.split('.').join('<span class="nice-point">&#46;</span>'); 
}); 
+0

謝謝馬特! - 對不起,我是jquery noob。我將如何分別指定三個? – Mark

+0

如果你知道總會有3個項目要替換,那麼上面的'String.split()'示例中的一個簡單變體就足夠了。你也可以通過傳遞一個函數作爲'String.replace()'的第二個參數來實現,我把它鏈接到了相關的文檔。試一試;這很簡單。有很多方法來剝皮這隻貓。 –

+0

什麼是'.' – diEcho

相關問題