返回false时获取url查询

时间:2012-10-26 18:08:02

标签: jquery

我一直在google上搜索这个,所以我得到了我想从网址(link to article)获取查询参数的功能。
但我无法找到我的问题的答案,我非常积极的是它应该很容易修复,我甚至觉得愚蠢的问,但我只是找不到这个具体的答案。

当我点击链接并且我在jquery中捕获该单击时,该函数返回false(我不想刷新),因此我想要的参数不会被解析为url。我如何得到这些?

CURRENT URL: index.php?page=search&action=searchAll
<h4 class="videoLink"><a href="index.php?page=search&amp;action=playVideo&amp;isAjax=true&amp;v={$result.link}" class="{$result.link}">{$result.title}</a></h4>

jQuery简化

$('.videoLink').click(playVideo);  

function playVideo(){
   url = getUrlVars();
   return false;
}

function getUrlVars(){
   var vars = [], hash;
   var hashes = window.location.href.slice(window.location.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;
}

所以当我追踪网址时,我只能获得参数:page&amp;动作

1 个答案:

答案 0 :(得分:0)

在返回false之前,您可以获取链接并提取参数..

$('a').click(function(e){

    var href = this.href;
    var params = {};
    // remove the part of the href up to the first ? character
    // and then split the remaining at the & character
    // loop the resulting list of somekey=somevalue
    // and split at the = and store in the params variable
    $.each(href.replace(/^.*?\?/gi,'').split('&'), function(i,val){
        var parts = val.split('=');
        params[parts[0]] = decodeURIComponent(parts[1]);
    });

    // do what you want with the params here

    return false;
});

<强>更新

如果您希望代码与浏览器位置一起使用以及传递给它的自定义网址,您可以将其更改为

function getUrlVars(href){
   var vars = [], 
       hash,
       url = href || window.location.href;

   var hashes = url.slice(url.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;
}

并像这样称呼它

function playVideo(){
   url = getUrlVars(this.href);
   return false;
}