2010-01-31 148 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