2010-01-31 149 views
4

我希望将“下载PDF”添加到链接到PDF文件的任何超链接。 目前,我可以预先确定该文本,但它将其预先添加到超链接文本中。我想它驻留在超链接元素以外,像这样:下载[超链接文本]jQuery预先链接到链接到PDF文件的所有超链接元素

的PDF这是代码我使用的是现在:

jQuery('a[href$=.pdf]').prepend('Download a PDF of '); 

回答

4

你以前试过吗?

jQuery('a[href$=.pdf]').before('Download a PDF of '); 
+1

+1很好的答案。它的工作原理:http://jsbin.com/akiba3我承认,我拿了@ BalusC的SSCCE,并改变了一条线,用你的解决方案来运行我的测试。 – 2010-01-31 18:06:28

+0

甜!我<3 jQuery。这让我的生活变得更加轻松。 = D – AlteredConcept 2010-01-31 18:10:11

+0

确实如此。没有意识到这一点。 – BalusC 2010-01-31 18:11:31

2

你可以在一个内联元素(例如<span>)和insert it before所需的元素包起来。下面是一个SSCCE,只是copy'n'paste'n'run它:

<!doctype html> 
<html lang="en"> 
    <head> 
     <title>SO question 2172666</title> 
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
     <script> 
      $(document).ready(function() { 
       $('<span>Download a PDF of </span>').insertBefore('a[href$=.pdf]'); 
      }); 
     </script> 
    </head> 
    <body> 
     <p><a href="foo.pdf">foo.pdf</a></p> 
     <p><a href="foo.exe">foo.exe</a></p> 
     <p><a href="bar.pdf">bar.pdf</a></p> 
    </body> 
</html> 

编辑:嗯,像以前那样接听,jQuery.before()工作正是你想要的方式,所以我会去为它来代替。

+0

'span'不是必需的,但它需要按照您在此处显示的方式(使用'$()'和'insertBefore'),但需要使用+1来更新答案并提供一个工作示例。 – 2010-01-31 18:05:18

+0

是的。我只是没有完全意识到'before()'的存在和好处。现在我做:) – BalusC 2010-01-31 18:13:07

0

下面是一个例子,将你在寻找什么:

<a href="foo.pdf">Foo</a> 
<a href="bar.pdf">Bar</a> 
<span id='foo'>Download a pdf of </span> 
<script type='text/javascript'> 
$('#foo').insertBefore('a[href$=.pdf]'); 
</script> 
4

已在答复中提供的其他选择是错误的,因为今天的反正。 jQuery的会抱怨:

未捕获的错误:语法错误,无法识别的表达:一个[HREF $ = PDF]

选择锚正确的做法是:

jQuery('a[href$=".pdf"]'); 

注意周围的报价。 pdf