我正在尝试构建一个功能,将文本与我想用javascript做的链接相关联。
以下是我将引用的一些示例html:
<div class="linkify">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. <a href="http://...">Nullam elit</a> risus, blandit eu pretium quis, porta a odio. Nullam rhoncus, lectus ac faucibus rutrum, dui massa dignissim nisi, ut auctor ipsum mi eget justo. Nam nec leo eget neque viverra pulvinar a aliquet lorem. Suspendisse sodales odio pretium lacinia pharetra. Donec at sapien a eros fermentum vehicula at sagittis felis. Proin eu venenatis leo. Phasellus volutpat auctor leo, ac dignissim risus fringilla eget.</p>
</div>
我想在任何“linkify”类中找到一个命名文本,并用<a>
标记包装,但是我也想避免在父标记已经是<a>
的情况下执行此操作
我对jquery不太好,在Google上找到答案是一个非常具体的要求,但有谁知道如何创建这个jquery语句?
由于
答案 0 :(得分:0)
这样的事情怎么样?
$('.linkify').each(function(k, v){
var text = $(v).find('p').text();
if(text.indexOf('pieceoftext') > -1){
var $p = $(v).find('p'),
newHtml = $p.html()
.replace('pieceoftext', '<a href="#">pieceoftext</a>');
if(!$(v).parent().is('a')){
$p.html(newHtml);
}
}
});
indexOf
有点过分了。我刚刚添加它以便于阅读。
答案 1 :(得分:0)
试试这个
function replaceToLink(str,href) {
$('.linkify :contains("' + str + '")').html(function () {
var check = $('.linkify a:contains("'+str+'")');
if(check.length ==0){
return $(this).html().replace(str, "<a href='"+href+"'>" + str + "</a>")
}
});
}
像这样使用
replaceToLink('nisi','http://google.se');
答案 2 :(得分:0)
此解决方案适用于任意字符串集:
var matches = ['Nullam elit', 'pretium quis', 'venenatis leo'];
$('.linkify').each(function(idx, el) {
$.each(matches, function(idx, val) {
if ($(el).html().indexOf(val) !== -1) {
$(el).html($(el).html().replace(val, '<a href="#whatever">' + val + '</a>'));
}
});
});
$('a a').unwrap();
$('a:empty').remove();
jsFiddle - http://jsfiddle.net/CTzNU/