【问题标题】:How to get the value from the anchor href?如何从锚点 href 中获取值?
【发布时间】:2010-09-15 14:51:03
【问题描述】:

我有一个类似 link 的锚点。使用 jQuery 可以在 URL 中获取“type”的值,并将其分配为同一页面中隐藏输入类型的值,而无需刷新页面。

【问题讨论】:

标签: jquery url get


【解决方案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);

【讨论】:

  • 但我只需要 type 的值并将其用作隐藏输入类型的值
  • 如果我只需要“234”而不需要“#content”该怎么办
【解决方案2】:

我刚才写了一个函数来获取查询字符串参数作为地图:

  /**
   * 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"]));

【讨论】:

  • 如果我只需要“234”而不需要“#content”该怎么办
  • @daron 更新了我的答案(功能代码)以处理片段。现在您将获得正确的名称-值对
猜你喜欢
  • 1970-01-01
  • 2012-03-18
  • 2015-04-03
  • 1970-01-01
  • 2021-02-04
  • 1970-01-01
  • 2021-03-30
  • 2013-03-04
相关资源
最近更新 更多