Jak rozdzielić napis na pierwszym `/` (ukośnik) i otoczyć jego część znakiem `<span>`?

167

Chcę sformatować tę datę: <div id="date">23/05/2013</div>.

Najpierw chcę podzielić ciąg w pierwszej, /a resztę umieścić w następnej linii. Następnie chciałbym otoczyć pierwszą część <span>tagiem w następujący sposób:

<div id="date">
<span>23</span>
05/2013</div>
23
05/2013

Co ja zrobiłem:

<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>

Zobacz JSFiddle .

Ale to nie działa. Czy ktoś może mi pomóc z jQuery?

Mustapha Aoussar
źródło
1
Twoje skrzypce nie są wymienione w jQueryTutaj jest zaktualizowany jsfiddle.net/K3D6d/2
Dhaval Marthak

Odpowiedzi:

374

Za pomocą split()

Fragment:

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>

Skrzypce

Po podzielić ten ciąg ---> 23/05/2013na/

var myString = "23/05/2013";
var arr = myString.split('/');

otrzymasz tablicę rozmiarów 3

arr[0] --> 23
arr[1] --> 05
arr[2] --> 2013
Mohammad Adil
źródło
4
Możesz także skrócić skrypt w ten sposób:var arr = $('#date').text().split('/');
SearchForKnowledge
Dzięki, Adil. Twoja odpowiedź jest warta rezygnacji. Dzięki.
ankit suthar
10

Zamiast używać podłańcucha ze stałym indeksem, lepiej użyj replace:

$("#date").html(function(t){
    return t.replace(/^([^\/]*\/)/, '<span>$1</span><br>')
});

Jedną z zalet jest to, że nadal działałby, gdyby pierwszy znajdował się /w innym miejscu.

Kolejną zaletą tej konstrukcji jest to, że byłaby rozszerzalna do więcej niż jednego elementu, na przykład do wszystkich implementujących klasę, po prostu zmieniając selektor.

Demonstracja (zauważ, że musiałem wybrać jQuery w menu w lewej części okna jsfiddle)

Denys Séguret
źródło
2

Powinieneś użyć html ():

ZOBACZ DEMO

$(document).ready(function(){
    $("#date").html('<span>'+$("#date").text().substring(0, 2) + '</span><br />'+$("#date").text().substring(3));     
});
A. Wolff
źródło
1

próbować

date.innerHTML= date.innerHTML.replace(/^(..)\//,'<span>$1</span></br>')
<div id="date">23/05/2013</div>

Kamil Kiełczewski
źródło
0

Użyj tego

<div id="date">23/05/2013</div>
<script type="text/javascript">
$(document).ready(function(){
  var x = $("#date").text();
    x.text(x.substring(0, 2) + '<br />'+x.substring(3));     
});
</script>
Anand Shah
źródło
to nie działa. dzwonisz .textna x? Jesteś pewny ?
Mohammad Adil
-2
var str = "How are you doing today?";

var res = str.split(" ");

Tutaj zmienna "res" jest rodzajem tablicy.

Możesz również wziąć tę jawność, deklarując ją jako

var res[]= str.split(" ");

Teraz możesz uzyskać dostęp do poszczególnych słów tablicy. Załóżmy, że chcesz uzyskać dostęp do trzeciego elementu tablicy, możesz go użyć, indeksując elementy tablicy.

var FirstElement= res[0];

Teraz zmienna FirstElement zawiera wartość „Jak”

Mike Clark
źródło