'How to wrap each word in a span but retain text formatting

How can I wrap each word in a span and retain text formatting? e.g. br, em, strong

I'm using the following code to wrap each word from a rich text editor in a span, but it's stripping out all my formatting.

$(window).load(function() {
$(".hero_image p").addClass("hero_image_caption");
$('.hero_image p').each(function(){
    var text = $(this).text().split(' ');

    for( var i = 0, len = text.length; i < len; i++ ) {
        text[i] = '<span>' + text[i] + '</span>';
        }
        $(this).html(text.join(' '));

        });        
});


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source