2010-09-15 143 views
0

我有一個像<錨A HREF = 「/類別/後/?類型= 234#內容」 >鏈接< /一>。使用jQuery可以在URL中獲取「type」的值,並在不刷新頁面的情況下將其分配爲同一頁面中隱藏輸入類型的值。如何從錨點href獲取值?

+0

見http://stackoverflow.com/questions/872217/jquery-how-to-extract-value-from-href-tag – Castrohenge 2010-09-15 14:57:39

+1

我覺得這是http://stackoverflow.com/questions/1403888/get的副本-url參數與 - jQuery和http://stackoverflow.com/questions/901115/get-querystring-with-jquery/901144#901144 – davehauser 2010-09-15 14:58:12

回答

1
$(function() { 
    var val = $('a').attr('href').match(/type\=\d+/)[0].replace(/type\=/,''); 
    $('input[type=hidden]').val(val); 
}); 

例如

var href = "/category/post/?type=234#content"; 
var filter = href.match(/type\=\d+/)[0].replace(/type\=/,'') 
console.log(filter); 
+0

但我只需要類型的值,並把它作爲價值隱藏輸入型 – daron 2010-09-15 14:59:34

+0

@daron更新=) – 2010-09-15 15:01:26

+0

我應該怎麼做,如果我只需要「234」,而不是「#內容」 – daron 2010-09-15 15:33:03

0

我寫一個函數來獲取查詢字符串參數作爲地圖前一陣子:

/** 
    * Gets the query parameters of the given URI as a associative array or map 
    * e.g. Given a URI http://www.level3labs.com/jaf?foo=bar&baz=bazzm, will 
    * give {"foo":"bar", "baz":"bazzm"} 
    * @param {URI} strUri The uri with a query 
    * @return Object containing query params or and empty object 
    */ 
    function getQueryParams(strUri) { 
    var paramMap = {}; 
    if(!strUri) { 
     return paramMap; 
    } 

    var strQuery = strUri.substring(strUri.indexOf("?")); 

    if(strQuery.lastIndexOf("#") !== -1) { 
     strQuery = strQuery.substring(0, strQuery.lastIndexOf("#")); 
    } 

    if(strQuery && strQuery.indexOf("?") === 0 && strQuery.length > 1) { 
     strQuery = strQuery.substring(1); 
     var paramValArr = strQuery.split("&"); 
     for(var i = 0, len = paramValArr.length; i < len; i++) { 
      var paramVal = paramValArr[i]; 
      var delimIdx = paramVal.indexOf("="); 

      var param = null; 
      var val = null; 
      if(delimIdx >= 0) { 
       param = unescape(paramVal.substring(0, delimIdx)); 
       val = unescape(paramVal.substring(delimIdx + 1)); 
      }else { 
       param = unescape(paramVal); 
      } 
      paramMap[param] = val; 
     } 
    } 
    return paramMap; 
    } 

這可以結合使用代碼如下:

var uri = $('a').attr('href'); 
    var params = getQueryParams(uri); 

    $('input[type=hidden]').val(params["type"])); 
+0

我應該怎麼做,如果我只需要「234」,而不是「#內容」 – daron 2010-09-15 15:36:06

+0

@daron更新我的回答(功能代碼)來處理片段。現在你將得到適當的名稱 - 值對 – naikus 2010-09-16 04:34:18