У меня есть текст с каждым словом, обернутым элементом span
, чтобы сделать их доступными для кликов. Я хочу, чтобы вы могли выделить раздел текста, щелкнув первое и последнее слова для выделения, а затем нажмите отдельную кнопку, чтобы выполнить выделение (т. Е. Обернуть каждое слово между первым и последним выбранными словами и включить их). Комментарий будет добавлен после выделенного раздела. Я добилась прогресса и получили до этой части:jQuery: wrapAll() элементы span при сохранении пробелов
HTML-:
<div id="textbox">
<span>Foo</span> <span>foo</span> <span>foo</span> <span>foo</span>
<span>foo</span> <span>foo</span> <span>foo</span> <span>foo</span>
<span>foo</span> <span>foo</span> <span>foo</span> <span>foo</span>.
</div>
<input id="commentbox" placeholder="Type your comment here">
<button id="exechighlight" value="Highlight">
JavaScript:
$('#textbox > span').click(function() {
$(this).addClass('selected');
});
$('#exechighlight').click(function(){
if($('#commentbox').val() !== '') {
$('.selected').filter(":last").after(' <span class="comment">' + $('#commentbox').val() + '</span>');
} else {
$('.selected').filter(':last').after(' <span class="comment">Default comment</span>');
}
$('.selected').filter(":first").nextUntil('.comment').andSelf().wrapAll('<span class="highlight">');
$('.selected').removeClass('selected');
$('#commentbox').val('');
});
Я могу завернуть вещь просто отлично, но wrapAll()
не кажется для сохранения пробелов между обернутыми элементами span
. Я пробовал с помощью CSS, безрезультатно:
.highlight {
background-color: #f00;
white-space: pre-wrap;
white-space: -moz-pre-wrap;
}
Как действовать? Мне нужно также отменить подсветку, т. Е. Развернуть <span class='highlight'>
и сохранить исходный интервал.
Вы бы сделать это гораздо ** ** легче помочь вам, если вы включили эти блоки кода в ** работоспособным ** [mcve] с помощью стека Отрывки (символ '<> 'кнопка панели инструментов). –
Благодарим за указание этого. Я обязательно запомню, что в следующий раз мне нужно будет задать вопрос! – TwoRE