¿Cómo dividir una cadena en el primer `/` (barra oblicua) y rodear parte de ella en un `<span>`?

167

Quiero dar formato a esta fecha: <div id="date">23/05/2013</div>.

Primero quiero dividir la cadena en la primera /y tener el resto en la siguiente línea. A continuación, me gustaría rodear la primera parte en una <span>etiqueta, de la siguiente manera:

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

Lo que hice:

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

Ver el JSFiddle .

Pero esto no funciona. ¿Alguien puede ayudarme con jQuery?

Mustapha Aoussar
fuente
1
Su violín no referenciado con jQueryAquí se actualiza jsfiddle.net/K3D6d/2
Dhaval Marthak

Respuestas:

374

Utilizando split()

Fragmento

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>

Violín

Cuando divides esta cadena ---> 23/05/2013en/

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

obtendrás una variedad de tamaños 3

arr[0] --> 23
arr[1] --> 05
arr[2] --> 2013
Mohammad Adil
fuente
44
También puede acortar el script de esta manera:var arr = $('#date').text().split('/');
SearchForKnowledge
Gracias Adil. Su respuesta vale la pena renunciar a uno. Gracias.
ankit suthar
10

En lugar de usar una subcadena con un índice fijo, será mejor que uses replace:

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

Una ventaja es que aún funcionaría si el primero /está en una posición diferente.

Otra ventaja de esta construcción es que sería extensible a más de un elemento, por ejemplo a todos aquellos que implementan una clase, simplemente cambiando el selector.

Demostración (tenga en cuenta que tuve que seleccionar jQuery en el menú en la parte izquierda de la ventana de jsfiddle)

Denys Séguret
fuente
2

Debe usar html ():

VER DEMO

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

tratar

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

Kamil Kiełczewski
fuente
0

utilizar este

<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
fuente
Esto no funciona. que está llamando .textel x? Estás seguro ?
Mohammad Adil
-2
var str = "How are you doing today?";

var res = str.split(" ");

Aquí la variable "res" es una especie de matriz.

También puede tomar esta explicidad declarándola como

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

Ahora puede acceder a las palabras individuales de la matriz. Supongamos que desea acceder al tercer elemento de la matriz, puede usarlo indexando elementos de la matriz.

var FirstElement= res[0];

Ahora la variable FirstElement contiene el valor 'Cómo'

Mike Clark
fuente