2012-03-15 52 views

回答

1

你遍歷所有<a>元素,還(有一個name屬性,而不是即那些)中的那些沒有href屬性。改爲使用a[href],它僅選擇實際上具有href屬性的<a>元素來替換:http://jsfiddle.net/Dh8JM/25/

$('a[href]').attr(...); 
+0

看,簡單!太感謝了!!! – Drewness 2012-03-15 19:42:01

+0

@TGxANAHEiiMx:請在支持您的答案旁邊打鉤,謝謝:) – pimvdb 2012-03-15 19:55:28

0

這會幫助

$("a[href='#top_page']").attr("href","some_link.html"); 
+0

不,我排除了任何到#top_page的href鏈接。感謝您的投入! – Drewness 2012-03-15 19:58:04

1

我建議:

$('a').each(
    function(){ 
     var h = this.href.substring(this.href.indexOf('#')+1); 
     if (h == 'top_page'){ 
      return false; 
     } 
     else { 
      this.href = h.replace(/ /g, '_') + '.html'; 
     } 
    });​ 

JS Fiddle demo

<a href='#Tax Services'>Tax Services</a> 

進入:從

以上會變成a元素

<a href="#Tax_Services.html">Tax Services</a> 
0

您遇到一個錯誤,其中一些你<a>標籤沒有定義的href屬性。 Here是一個工作小提琴。

$('a').attr('href', function(i, val) { 
    // skip the undefined ones with val !== undefined 
    if (val !== '#top_page' && val !== undefined) { 
     return val.replace(/\#/, '').replace(/\s/g, '_') + '.html'; 
    } 
}); 
+0

但你不覺得它很簡單,只是使用attr()替換href而不是使用regex?我知道你正在糾正OP的代碼,但想知道你的想法。 – DG3 2012-03-15 19:51:43

+0

@ DG3如果您查看OP代碼,則可以看到OP正試圖根據已設置的href值更改每個href元素。 – sinemetu1 2012-03-15 19:54:27