2011-10-10 56 views
1

我期待自定義博客中的默認日期標題與jQuery。jQuery替換連字符與博客日期標題的跨度

原始輸出是:

<h2 class='date-header'>2011-01-20</h2> 

我想換行YYYY,MM,DD和在跨度,所以我可以操縱它們的子節點。

其結果將是:

<h2 class='date-header'><span class="dhy">2011</span><span class="dhm">01</span><span class="dhd">20</span></h2> 

我的企圖都增加了額外的代碼,因此它是一個嵌套的爛攤子。

任何人都有一個很好的解決方案?

+0

我更成功地使用此代碼:$( 「a」)的各(function(){ $(this).html($(this).html()。replace(/ [_-]/g,「」)); });來自http://chirale.wordpress.com/2009/07/04/character-substitution-on-jquery/。仍然不開心。 – mike

回答

2

這裏是一個不錯的功能性解決方案:

$('.date-header').html(function() { 
    var txt = $(this).text(); 
    var classes = ['dhy', 'dhm', 'dhd']; 
    $(this).html($.map(txt.split(/-/), function(val) { 
     return $('<span/>', {'class': classes.shift()}).text(val)[0]; 
    })); 
}); 

http://jsfiddle.net/ThiefMaster/WdRAw/

+0

像一個魅力工作! – mike

+0

然後請不要忘記通過點擊答案左邊的灰色複選標記來接受答案。 – ThiefMaster

0

我想這應該這樣做:

var header = $('.date-header'); 
var d = header.text().split('-'); 
header.html('<span class="dhy">' + d[0] + '</span><span class="dhm">' + d[1] + '</span><span class="dhd">' + d[2] + '</span>'); 
+0

我會在第一行使用'.text()而不是'.html()'。 – ThiefMaster

+0

我已經更新了我的回答,以便也包含這一點。 – deviousdodo

1

如果它總是有YYYY-MM-DD的通過他們相同的格式,那麼你可以使用拆分得到的元素,循環,創建HTML輸出,然後將其添加爲h2的HTML。

$(function() 
{ 

    $(".date-header").each(function() 
    { 

     var arrDate = $(this).text().split("-"); 

     var strOut = '<span class="dhy">'+arrDate[0]+'</span>-'; 
     strOut+= '<span class="dhm">'+arrDate[1]+'</span>-'; 
     strOut+= '<span class="dhd">'+arrDate[2]+'</span>'; 

     $(this).html(strOut); 

    }); 

}); 

而且小提琴:http://jsfiddle.net/ahallicks/xGa2J/2/

+0

呃..匈牙利符號..它會死嗎? – ThiefMaster

+0

究竟有什麼問題? – Alex