2010-09-15 7 views
0

J'ai une ancre comme < un href = "/ catégorie/poste /? Type = 234 # contenu" > lien </a >. En utilisant un jQuery, il est possible d'obtenir la valeur de "type" dans l'URL et de l'assigner comme valeur pour un type d'entrée caché dans la même page sans actualiser la page.Comment obtenir la valeur de l'ancre href?

+0

Voir http://stackoverflow.com/questions/872217/jquery-how-to-extract-value-from-href-tag – Castrohenge

+1

Je pense que c'est un doublon de http://stackoverflow.com/questions/1403888/get -url-paramètre-avec-jquery et http://stackoverflow.com/questions/901115/get-querystring-with-jquery/901144#901144 – davehauser

Répondre

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

exemple:

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

mais j'ai seulement besoin de la valeur de tapez et utilisez-le comme valeur pour caché type d'entrée – daron

+0

@daron mis à jour =) –

+0

que dois-je faire si j'ai seulement besoin de "234" mais pas de "#content" – daron

0

j'avais écrit une fonction pour obtenir les paramètres querystring comme une carte il y a un certain temps:

/** 
    * 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; 
    } 

Ceci peut être utilisé conjointement avec le code ci-dessous:

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

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

que dois-je faire si j'ai seulement besoin de "234" mais pas de "#content" – daron

+0

@daron Mise à jour de ma réponse (code de fonction) pour gérer les fragments. Maintenant, vous obtiendrez des paires nom-valeur correctes – naikus