我对jQuery有一个基本的问题。
我实际上想要更改Textarea中的“a”标签。我知道“a”标签在textarea中不起作用所以我不能使用jQuery选择器来定位它们。
示例:
<textarea><a href="http://www.google.com"></a></textarea>
我想换成这个:
<textarea><a href="http://www.stackoverflow.com"></a></textarea>
这件事有什么基本解决方案吗?
编辑:我忘了提到第一个链接(http://www.google.com)不是静态链接。它将永远在变化。所以我需要一个终极解决方案。
答案 0 :(得分:3)
这是一个例子;加载后,href将被取代:
<!DOCTYPE html>
<html>
<head>
<script>
window.onload = function () {
var textarea = document.getElementsByTagName("textarea")[0];
textarea.innerHTML =
textarea.innerHTML.replace(
/href=".*"/,
"http://www.stackoverflow.com");
}
</script>
</head>
<body>
<textarea><a href="http://www.google.com"></a></textarea>
</body>
</html>
答案 1 :(得分:2)
如果要获取textarea的内容,将其置于不可见的div中,使用div中的jquery选择器进行更改,然后使用新内容重新填充textarea,该怎么办?
HTML:
<div style="display:none;"></div>
<textarea><a href="http://www.google.com"></a></textarea>
jQuery的:
$('div').html($('textarea').val());
$('div').find('a').attr('href', 'http://www.stackoverflow.com');
$('textarea').val($('div').html());
答案 2 :(得分:1)
var txt = $('textarea').text();
var ancStart = txt.toString().indexOf('<a');
var ancEnd = txt.toString().indexOf('a>') + 2;
var sl = (ancStart * -1) + ancEnd;
var newTxt = txt.slice(sl);
newTxt += '<a href="http://www.stackoverflow.com"></a>';
$('textarea').empty().text(newTxt);
答案 3 :(得分:1)
使用快速拍在一起的正则表达式来处理textarea中所有类似链接的模式,这将可能做你想要的,但没有更多的上下文,它很难说出来肯定的是:
var new_url = "www.stackoverflow.com";
var text = $('textarea').html();
$('textarea').html(text.replace(/(<a [^&]*href=['"])[^'"]*(['"][^&]*>)/, "\$1"+new_url+"\$2"));
在此处查看此行动:http://jsfiddle.net/JaTAr/2/
这将在textarea中查找具有模式<a ...href='...'...>
的任何内容,并将其替换为<a ...href='www.stackoverflow.com'...>
。所以根据你的内容,它可能会很繁琐,但可能它会做你想要的。