javascript - Jak rozdělit řetězec na první `/` (lomítko) a obalit jeho část do `<span>`?
Chci naformátovat toto datum: <div id="date">23/05/2013</div>.
Nejprve chci rozdělit řetězec na prvním / a zbytek mít v následujícím řádku. Poté bych chtěl obalit první část do tagu <span>, takto:
<div id="date">
<span>23</span>
05/2013</div>
23 05/2013
Co jsem udělal:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="date">23/05/2013</div>
<script type="text/javascript">
$(document).ready(function() {
$("#date").text().substring(0, 2) + '<br />';
});
</script>Podívejte se na JSFiddle.
Ale to nefunguje. Může mi někdo pomoci s jQuery?
Odpověď č. 1
Používání split()
Ukázka :
var data =$('#date').text();
var arr = data.split('/');
$("#date").html("<span>"+arr[0] + "</span></br>" + arr[1]+"/"+arr[2]); <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="date">23/05/2013</div>Housle
Když tuto řetězec ---> 23/05/2013 rozdělíte podle /
var myString = "23/05/2013";
var arr = myString.split('/');
dostanete pole velikosti 3
arr[0] --> 23
arr[1] --> 05
arr[2] --> 2013
Odpověď č. 2
Místo použití substring s pevně daným indexem je lepší použít replace :
$("#date").html(function(t){
return t.replace(/^([^\/]*\/)/, '<span>$1</span><br>')
});
Jednou z výhod je, že by to stále fungovalo, i kdyby první / byla na jiné pozici.
Další výhodou této konstrukce je, že by byla rozšiřitelná na více než jeden prvek, například na všechny, které implementují třídu, pouhou změnou selektoru.
Demonstrace (všimněte si, že jsem musel v nabídce v levé části okna jsfiddle vybrat jQuery)
