我正在尝试运行正则表达式来执行此操作:
替换文档中apk文件的所有实例:
<a href="http://download.mydomain.com/files/androidfile.apk">
使用:
<a target="_blank" href="http://mydomain.com?f=http://download.mydomain.com/files/androidfile.apk">
使用此JQUERY代码:
$('body').contents().filter(function() {
return this.nodeType === 3;
}).each(function() {
$(this).replaceWith($(this).text().replace(/<a href~/^.*\.(apk)$/i, 'http://mydomain.com?f=">$1</a>'));
});
基本上,删除download.mydomain.com/files/androidfile.apk
之前的代码,即<a href="http://
,并替换为<a target="_blank" href="http://mydomain.com?f=http://
。页面中可能有几个,所以我需要一个可能匹配并替换所有的解决方案。
正则表达式和替换似乎不起作用,可能是解决方案。
总而言之,我希望能够在JQuery中执行此操作:
<html>
<a href="http://download.domain.com/files/androidfile1.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://download.domain.com/files/androidfile2.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://download.domain.com/files/androidfile3.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://download.domain.com/files/androidfile4.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://download.domain.com/files/androidfile5.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
</html>
对此:
<html>
<a href="http://mydomain2.com?f=http://download.domain.com/files/androidfile1.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://mydomain2.com?f=http://download.domain.com/files/androidfile2.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://mydomain2.com?f=http://download.domain.com/files/androidfile3.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://mydomain2.com?f=http://download.domain.com/files/androidfile4.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://mydomain2.com?f=http://download.domain.com/files/androidfile5.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
</html>
答案 0 :(得分:1)
你正在做的是 overkill ,虽然它不起作用,为什么选择页面上的所有元素?如果您想选择a
元素,为什么不使用$('a')
选择它们?要向href
属性添加字符串,您可以使用attr
方法。
$('a').filter(function() {
return this.href.indexOf('apk')
}).attr('href', function(i, href) {
return 'http://mydomain.com?f=' + href
}).attr('target', '_blank');
答案 1 :(得分:1)
下面的代码可以解决问题。我使用ends with selector而不是使用正则表达式。这应该起到同样的作用,并且执行得更快。我没有完全重写标签,而是使用jQuery.attr()修改了属性。一个现实的例子是here。
<!DOCTYPE html>
<html>
<head>
<title>test</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
$('a[href$=apk]').each(function()
{
var mydomain = "http://mydomain2.com?f=";
var $this = $(this);
$this.attr("href", mydomain+$this.attr("href"));
$this.attr("target", "_blank");
});
});
</script>
</head>
<body>
<a href="http://download.domain.com/files/androidfile1.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://download.domain.com/files/androidfile2.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://download.domain.com/files/androidfile3.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://download.domain.com/files/androidfile4.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://download.domain.com/files/androidfile5.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
</body>
</html>
结果输出为:
<a target="_blank" href="http://mydomain2.com?f=http://download.domain.com/files/androidfile1.apk"><img src="theme/download.gif" alt="download" height="120px" border="0" width="130px"></a><br>
<a target="_blank" href="http://mydomain2.com?f=http://download.domain.com/files/androidfile2.apk"><img src="theme/download.gif" alt="download" height="120px" border="0" width="130px"></a><br>
<a target="_blank" href="http://mydomain2.com?f=http://download.domain.com/files/androidfile3.apk"><img src="theme/download.gif" alt="download" height="120px" border="0" width="130px"></a><br>
<a target="_blank" href="http://mydomain2.com?f=http://download.domain.com/files/androidfile4.apk"><img src="theme/download.gif" alt="download" height="120px" border="0" width="130px"></a><br>
<a target="_blank" href="http://mydomain2.com?f=http://download.domain.com/files/androidfile5.apk"><img src="theme/download.gif" alt="download" height="120px" border="0" width="130px"></a><br>