2011-04-02 73 views
1

假設你有一個包含一些值的鏈接:增量HREF值:

<a href="/action?number_one=1&number_two=4" class="some_link"> something </a> 

你怎麼能增加NUMBER_ONE和NUMBER_TWO時使用jQuery這個鏈接用戶點擊?

我知道extract number_one's value你可以使用正則表達式:

var number_one = $(this).attr("href").match(/number_one=([0-9]+)/)[1]; 

你怎麼能然後增加它由20說,這樣它現在變成:

<a href="/action?&number_one=21&number_two=24" class="some_link"> something </a> 

回答

1

此作品在Chrome中,至少 - .search屬性是HTML5屬性:

// get the real link element 
var link = $(this).get(0); 
var fields = {}; 

// parse and increment number one 
fields.number_one = link.search.match(/number_one=([0-9]+)/)[1]; 
fields.number_one += 20; 

// do same for number two: 
fields.number_two = link.search.match(/number_two=([0-9]+)/)[1]; 
fields.number_two += 20; 

// update the link's query parameters 
link.search = $.param(fields); 
+0

對我來說,它連接字符串 - 你也可以告訴鏈接上的「搜索」屬性是什麼?我以這種方式工作:http://jsfiddle.net/TNAba/。 – pimvdb 2011-04-02 21:32:13

+0

pimvdb,你的方式工作,但它返回鏈接作爲/ number_one = 21是完整的鏈接:action?number_once = 21 – 2011-04-02 21:48:21

+0

'$(this).get(0)'是隻是'這個' – 2011-04-02 22:59:00

0

這應該對任何網址查詢var=number對數:

var fixed_url = $(this).attr("href").replace(
     // This regex matches a url-query var=number 
     /([?&]\w+=)(\d+)(?=[&#]|$)/g, 
     // This function increments the value by one. 
     function(m0, m1, m2) { 
      return m1 + (Number(m2) + 1); 
     }); 

編輯:刪除無效的jQuery分配。

+0

如果你也有一個非數字變量,它可以工作,例如?var1 = text&var2 = 4 – 2011-04-02 21:56:56

+0

它簡單地跳過任何url-query var = value對,其中值有非數字(並保持不變)。它只修改值爲純數字的那些。 – ridgerunner 2011-04-02 22:34:11

+0

該代碼無效。你不能通過給它賦值來設置'$(this).attr(「href」)'的值。 – 2011-04-02 23:00:30