gpt4 book ai didi

javascript - jQuery:修改文本区域内的 A 标签

转载 作者:行者123 更新时间:2023-11-30 09:23:37 24 4
gpt4 key购买 nike

我想将 target="_blank" 添加到文本区域内的某些“A”标签。当它们不在文本区域内时我可以修改它们,但当它们在文本区域内时我不能这样做。

对于这段代码,我只想在它是外部链接时添加目标属性。 jsFiddle link

<form>
<textarea id="description">
<a href="https://www.website.com/">internal</a>
<a href="https://www.google.com/">external no target</a>
<a href="https://www.google.com/" target="_blank">external target</a>
<a href="https://www.google.com/">external no target</a>
<a href="https://website.com/">internal</a>
<a href="https://www.google.com/">external no target</a>
</textarea>
<button class="btn btn-success">Go</button>

</form>

<a href="https://www.google.com/">external no target</a>

我尝试了几种不同的方法来指定链接在文本区域内,但都没有用。这是我试过的一个版本...

// This does not work...
$('#description a:not([target])').not('a[href*=website]').attr('target', '_blank');

// This works for the link
$('a:not([target])').not('a[href*=website]').attr('target', '_blank');

非常感谢任何帮助。谢谢。

最佳答案

因为它们是文本而不是您需要操作字符串的实际元素。

一种简单的方法是将字符串作为 html 放入临时元素中,在该元素上运行 dom 方法并返回更新后的 html

类似于:

$('#description').val(function(_,currVal){
var $div = $('<div>').append(currVal);
$div.find('a:not([target])').not('a[href*=website]').attr('target', '_blank');
return $div.html()
})

关于javascript - jQuery:修改文本区域内的 A 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50115346/

24 4 0