2017-09-04 1 views
2

ich ein paar Spannweiten wie dieses:Swap Wörter umfasst

<span class="test">word1 word2 @ different content test </span> 
<span class="test">word3 word4 @ different content test343wer</span> 
<span class="test">example54 example98 @ different content3453</span> 
<span class="test">word13 word92 @ different content1111111</span> 
<span class="test">word223 word14 @ different content00</span> 

Und ich brauche diese Ausgabe:

<span class="test">word2 word1</span> 
<span class="test">word4 word3</span> 
<span class="test">example98 example54</span> 
<span class="test">word92 word13</span> 
<span class="test">word14 word223</span> 

Beachten Sie, dass die ersten beiden Worte Position und alles von getauscht haben @ abgezogen wird.

Ich habe mit diesem Code getestet, aber es ist unvollständig und funktioniert nicht. Und es verwendet eine ID nicht eine Klasse:

var datetime = document.getElementById('test').innerHTML; 
var date = datetime.substr(0, datetime.indexOf('@')).trim();  
var reverse = date.split(" "); 
reverse.reverse(); 
var result = (reverse[0] + ' ' + reverse[1]) 
console.log(result); 

Die Anzahl der Spannweiten variieren kann

Danke für die Hilfe :)

Antwort

2

Der einfachste Weg, dies zu erreichen, um split() der Text durch die Räume sein würde, bekommen die ersten beiden Elemente des resultierenden Arrays umkehren sie, dann kommen sie wieder zusammen in einem String, so etwas wie folgt aus:

$('.test').text(function(i, t) { 
 
    return t.trim().split(' ').slice(0, 2).reverse().join(' '); 
 
})
span { display: block; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<span class="test">word1 word2 @ different content</span> 
 
<span class="test">word3 word4 @ different content</span> 
 
<span class="test">example54 example98 @ different content</span> 
 
<span class="test">word13 word92 @ different content</span> 
 
<span class="test">word223 word14 @ different content</span>

+0

Das ist nett ein @ Rory McCrossan akzeptieren diese @ user6079228, funktioniert perfekt mit minimalen Code –

+0

Funktioniert perfekt, thx :) – user6079228

2

Need $.each() mit wenig Verbesserung in der Anzahl der Codezeilen verwenden: -

$(document).ready(function(){ 
 
    $('.test').each(function(){ 
 
    var spantext = $(this).html().split(" ").slice(0,2).reverse(); 
 
    $(this).html(spantext[0] + ' ' + spantext[1]); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<span class="test">word1 word2 @ different content</span> 
 
<span class="test">word3 word4 @ different content</span> 
 
<span class="test">example54 example98 @ different content</span> 
 
<span class="test">word13 word92 @ different content</span> 
 
<span class="test">word223 word14 @ different content</span>

+0

Vielen Dank, funktioniert gut. Aber die andere Antwort hat weniger Code, also habe ich das akzeptiert. Prost! – user6079228

0

Btw Liebe Rorys Antwort oben für ihre Kürze.

gut, in jquery Sie es so tun könnte:

$(".test").each(
    function(index) { 
    var text = $(this).html(); 
    text = text.split('@')[0].split(' ').reverse().join(' '); 
    $(this).html(text); 
    } 
); 

JSfiddle hier: https://jsfiddle.net/q2xc1c0b/3/