在jquery中查找,替换每个元素

时间:2012-11-07 21:54:24

标签: jquery

我在这个var:“ver”中有这个 在这里我有几行像这样:

<div class="link" id="1"><a ...>Anchor</a></div>
<div class="link" id="2"><a ...>Anchor 2</a></div>

我在jquery中搜索代码,将上面的代码转换为:

<div class="link" id="1"><a ...><img src="...?anchor=Anchor" /></a></div>
<div class="link" id="1"><a ...><img src="...?anchor=Anchor 2" /></a></div>

我对代码的期望:找到每个锚点 - 获取它 - 生成显示此锚点的图像。 PS:我有“图像生成”的功能。

解决:

$(".link").each(function(){

            anchor =  $(this).find('a').text();
             $(this).find('a').html('<img src="generateLink.php?nr='+encodeURIComponent(anchor)+'" width="39" height="12"/>');  

            });

2 个答案:

答案 0 :(得分:2)

我想最好的方法是使用正则表达式。

jQuery('.link').each(function() {
    jQuery(this).html(
        jQuery(this).html().replace(/<a(.*)>(.*)<\/a>/g,
            '<a $1><img src="..?anchor=$2" /></a>')
    );
});

在第一行,您告诉jQuery使用类“link”获取每个元素。 然后你可以使用'/(.*)< / a&gt; / g'找到该元素中的每个链接。

第一组(一组看起来像这样:'(。*)')表示我们想要捕获的第一组,因为我们需要 元素携带的信息。

第二组是我们想要存储的信息,因此我们知道要为我们的图像提供什么变量。

在第四行,我们将去替换我们需要的东西。每个$ -sign后跟一个数字是我们在第三行捕获的一个组。

如果你想对正则表达式进行一些测试,我肯定会推荐http://gskinner.com/RegExr/

答案 1 :(得分:0)

如果我理解,你必须改为:

$(this).find(a).text().replaceWith(anchor); 

有关

$(this).find(a).text(varwithnewcontent); 

如果没有,抱歉!