19

jQuery は初めてで、サーバーが生成する URL のパラメーターを取得するのに問題があります。次のような URL があります。

<span class="popuptest"><a href="www.example.com/test?param1=1&param2=2">find param</a></span>

私のjquery関数は次のようになります:

$(function() {
  $('.popuptest a').live('click', function(event) {
  $.extend({
    getUrlVars: function(){
      var vars = [], hash;
      var hashes = this.href.slice(this.href.indexOf('?') + 1).split('&');
      for(var i = 0; i < hashes.length; i++)
      {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
      }
      return vars;
    },
    getUrlVar: function(name){
      return $.getUrlVars()[name];
    }
  });
  var second = getUrlVars()["param2"];
  alert(second);
  return false;
  });
});

リンクをクリックすると「2」と表示されるはずですが、何も得られません... jQuery noobの助けはありますか? 前もって感謝します!

ブログでこれを見つけました: http://jquery-howto.blogspot.com/2009/09/get-url-parameters-values-with-jquery.html

4

9 に答える 9

18

その目的のためにjQueryは必要ありません。純粋なJavaScriptを使用できます。

function getParameterByName( name,href )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( href );
  if( results == null )
    return "";
  else
    return decodeURIComponent(results[1].replace(/\+/g, " "));
}

この方法で関数を呼び出すことができます。getParameterByName(param1,href of your link)

デモ

于 2011-02-22T04:26:13.047 に答える
12

小さな改善、URL を 1 回だけ解析し、配列またはパラメーターを返す:

function getURLParameters(url){

    var result = {};
    var hashIndex = url.indexOf("#");
    if (hashIndex > 0)
       url = url.substr(0, hashIndex);        
    var searchIndex = url.indexOf("?");
    if (searchIndex == -1 ) return result;
    var sPageURL = url.substring(searchIndex +1);
    var sURLVariables = sPageURL.split('&');
    for (var i = 0; i < sURLVariables.length; i++)
    {       
        var sParameterName = sURLVariables[i].split('=');      
        result[sParameterName[0]] = sParameterName[1];
    }
    return result;
}

http://jsfiddle.net/shakhal/gXM3u/

于 2013-05-30T15:37:57.997 に答える
1

あなたのjqueryは

$(function() {  
 $('.popuptest a').live('click', function(event) {
 $.extend({     getUrlVars: function(){
  var vars = [], hash;
  var hashes = $('.popuptest a').attr("href").slice($('.popuptest     a').attr("href").indexOf('?') + 1).split('&');
  for(var i = 0; i < hashes.length; i++)
  {
    hash = hashes[i].split('=');
    vars.push(hash[0]);
    vars[hash[0]] = hash[1];
  }
  return vars;
},
getUrlVar: function(name){
  return $.getUrlVars()[name];
}
  });
  var second = $.getUrlVars()["param2"];
  alert(second);
  return false;
  });
});

注意事項:

  1. 行内の $.getUrlVars - var second = $.getUrlVars()["param2"];
  2. this.href は $('.popuptest a').attr("href") に置き換えられます
于 2011-02-22T04:41:20.050 に答える