jquery: найти строку и обернуть ее в тег ?

2 ответа

Use :contains filter selector:

$('p.hidden:contains("click here")')

To wrap it in link:

$('p.hidden:contains("click here")').html()
.replace('click here', '<a href="url">click here</a>');

To wrap whole text in link:

$('p.hidden:contains("click here")')
.html('<a href="url">' + $('p.hidden:contains("click here")').text() + '<a>');

More Info:

19
ответ дан 5 December 2019 в 06:22
поделиться

Не используйте взлом строки HTML. Представьте, что произойдет, если вы попытаетесь заменить более ... тегом ... массово сломанная разметка. И это только начало проблем.

Вместо этого перебирайте текстовые узлы в той части документа, которую вы хотите исследовать, ищите текстовые совпадения и вставляя новую ссылку, используя методы в стиле DOM.

jQuery здесь не особо поможет, так как не имеет функций для обработки текстовых узлов. Вместо этого используйте что-то вроде функции findText () из этого вопроса и используйте splitText для разделения текстового узла:

findText($('#fancy_hover')[0], /\bClick here\b/gi, function(node, match) {
    node.splitText(match.index+match[0].length);
    var link= document.createElement('a');
    link.href= 'http://www.example.com/';
    link.appendChild(node.splitText(match.index));
    node.parentNode.insertBefore(link, node.nextSibling);
});
7
ответ дан 5 December 2019 в 06:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: