如何使用jquery查找文本,同时省略链接

时间:2013-09-30 14:34:58

标签: javascript jquery

我正在尝试构建一个功能,将文本与我想用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语句?

由于

3 个答案:

答案 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有点过分了。我刚刚添加它以便于阅读。

http://jsfiddle.net/xvwMc/4/

答案 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');

DEMO

答案 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/