Это интересная проблема. Я бы подошел с удобным методом javascript splice . Splice может использоваться для вставки и удаления элементов массива. Я бы порекомендовал открыть инспектора и опробовать некоторые примеры, которые я написал ниже.
Сначала мы будем использовать jQuery для выбора заголовка, а затем манипулировать строкой содержимого html. Я предполагаю, что определенный заголовок, которым вы хотите манипулировать, будет иметь класс, и я заменил «динамический»:
var header = $("h1.dynamic").text();
=> "Header with some other stuff"
var header_as_array = header.split(" ")
=> ["Header", "with", "some", "other", "stuff"]
var first_half = header_as_array.splice(0, header_as_array.length/2)
Имейте в виду, что splice изменяет исходный массив, поэтому на этом этапе:
first_half = ["Header", "with"]
header_as_array = ["some", "other", "stuff"]
Теперь вы можете объединить их вместе и обернуть их интервалами примерно так:
var first = '<span class="first_half">'+first_half.join(" ")+'</span>';
var second = '<span class="second_half">'+header_as_array.join(" ")+'</span>';
var finished = first+" "+second;
Наконец, мы поместим нашу законченную строку обратно в заголовок с помощью jQuery:
$("h1.dynamic").html(finished);
То, как я написал это заголовок с нечетным количеством слов, всегда будет иметь вторую половину как более длинную. Если вы предпочитаете это, вы можете сделать следующее:
var splice_location = Math.ceil(test_as_array.length/2);
var first_half = header_as_array.splice(0, splice_location);
По умолчанию нецелое значение будет усечено, но здесь мы используем функцию потолка для округления вверх, а не вниз.