使用jQuery转换超链接标记时忽略图像标记

时间:2016-10-27 09:11:05

标签: javascript jquery html image hyperlink

我正在使用一个函数将文本中写出的所有超链接转换为实际工作的超链接。但是,该功能还会在每个<img src="http://linktoimage.jpg">中定位<p>,将其分解为:

<img src="<a href="http://linktoimage.jpg">http://linktoimage.jpg</a>/>

这是函数,我试图添加一个.not('img')但这没有用,所以如何忽略所有子img-tags?

JS-功能:

jQuery('p').each(function(){
   jQuery(this).not('img').html( jQuery(this).html().replace(/((http|https|ftp):\/\/[\w?=&.\/-;#~%-]+(?![\w\s?&.\/;#~%"=-]*>))/g, '<a href="$1">$1</a> ') );
    });

1 个答案:

答案 0 :(得分:2)

使用.text()只获取元素p中的文本而不是.html()

a="0123456789"
inp=[1,2,6,1]
start_pos=[0]               #Fix first start position
x=0
for i in inp:               #Calculate start positions of slices
    x=x+i
    start_pos.append(x)
res=[]
for i in range(len(inp)):   #Cut out slices
    res.append(int(a[start_pos[i]:start_pos[i]+inp[i]]))
print (res) 

[0, 12, 345678, 9]
$(document).ready(function(){
$('p').each(function(){
   $(this).html( $(this).text().replace(/((http|https|ftp):\/\/[\w?=&.\/-;#~%-]+(?![\w\s?&.\/;#~%"=-]*>))/g, '<a href="$1">$1</a> ') );
    });
});