2010-09-15 138 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