我用两个例子解释我的问题:
例1:
当前字符串:
var str = 'anything <a href="www.google.com" target="_blank">untitled</a> anything';
// ^ link-name
我想要这个字符串:
var newstr = 'anything www.google.com anything';
例2:
当前字符串:
var str = 'anything <a href="www.google.com" target="_blank">any thing else</a> anything';
// ^ link-name
我想要这个字符串:
var str = 'anything [any thing else](www.google.com) anything';
正如您在上面的两个示例中所看到的,untitled
是一个关键字。我想如果链接名称是untitled
,那么创建一个常规URL,但如果不是,则创建一个基于模式的URL。
注意: pattern = [LinkName](LinkAddress)
我该怎么做?
这也是我的尝试:
var newStr = $('<div/>', {html: str}).find("a").replaceWith(function(){
return $(this).attr('href'); // this.href would give absolute path
}).end().text();
我的代码会根据所有类型的链接创建常规网址。如何添加条件(检查是否为untitled
的链接名称)?
答案 0 :(得分:1)
我不明白。你做的是对的。以下是您的解决方案完美无缺:
$(function () {
var str = 'anything <a href="www.google.com" target="_blank">untitled</a> anything';
var newStr = $('<div/>', {html: str}).find("a").replaceWith(function(){
return ($(this).text().trim().toLowerCase() == 'untitled') ? $(this).attr('href') : "[" + $(this).text() + "](" + $(this).attr('href') + ")";
}).end().text();
$("body").append(newStr + "<br /><br />");
str = 'anything <a href="www.google.com" target="_blank">any thing else</a> anything';
newStr = $('<div/>', {html: str}).find("a").replaceWith(function(){
return ($(this).text().trim().toLowerCase() == 'untitled') ? $(this).attr('href') : "[" + $(this).text() + "](" + $(this).attr('href') + ")";
}).end().text();
$("body").append(newStr);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
&#13;
更新的代码(更好的版本)
$(function () {
var str = 'anything <a href="www.google.com" target="_blank">untitled</a> anything';
var newStr = string_it(str);
$("body").append(newStr + "<br /><br />");
str = 'anything <a href="www.google.com" target="_blank">any thing else</a> anything';
newStr = string_it(str);
$("body").append(newStr);
});
function string_it (str) {
return $('<div/>', {html: str}).find("a").replaceWith(function(){
return ($(this).text().trim().toLowerCase() == 'untitled') ? $(this).attr('href') : "[" + $(this).text() + "](" + $(this).attr('href') + ")";
}).end().text();
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
&#13;
答案 1 :(得分:1)
您只需要检查元素的文本内容:
var newStr = $('<div/>', {
html: str
}).find("a").replaceWith(function() {
var
href = this.getAttribute('href'),
text = this.textContent
;
return text === 'untitled'
? href
: "[" + text + "](" + href + ")";
}).end().text();